Skip to content

Instantly share code, notes, and snippets.

View mobinni's full-sized avatar

Mo Binni mobinni

  • Zero To Mastery
  • Toronto, Ontario
View GitHub Profile
@mobinni
mobinni / reducers.js
Created January 24, 2016 22:24
A Modern Isomorphic Stack with Redux - Part 2
function feeds(state = [], action) {
if (action.type === 'get') return action.payload;
else return state;
}
export default {
feeds
}
@mobinni
mobinni / index.js
Last active January 24, 2016 22:31
A Modern Isomorphic Stack with Redux - Part 2
import ModuleCollector from './modules/moduleCollector';
import storeBuilder from './store/storeBuilder';
import feed from './modules/feed';
export function initialise(customMiddlewares = []) {
const moduleCollector = new ModuleCollector();
moduleCollector.add(feed);
const coreReducers = moduleCollector.getReducers();
@mobinni
mobinni / storeBuilder.js
Last active January 27, 2016 16:06
A Modern Isomorphic Stack with Redux - Part 2
import { combineReducers, createStore, compose, applyMiddleware } from 'redux';
import DevTools from '../tools/devtools';
function _buildStore(middlewares, reducers) {
let functions = [applyMiddleware(...middlewares)];
if (process.env.feature.DEV) {
functions.push(require('../tools/devtools').default.instrument());
}
return compose(
...functions
@mobinni
mobinni / moduleCollector.js
Last active January 27, 2016 15:12
A Modern Isomorphic Stack with Redux - Part 2
class ModuleCollector {
constructor(config) {
this.actions = [];
this.reducers = [];
this.modules = {};
this.config = config;
}
add(newModule) {
if (typeof newModule === 'function') {
@mobinni
mobinni / app.js
Last active January 27, 2016 16:08
A Modern Isomorphic Stack with Redux - Part 2
// Import default Styles
import '../styles/general/styles.scss';
// Import Modules
import React from 'react';
import ReactDOM from 'react-dom';
import createBrowserHistory from 'history/lib/createBrowserHistory'
import Router from 'react-router';
import routes from './routes';
import {initialise} from '../lib';
@mobinni
mobinni / devtools.jsx
Created January 27, 2016 16:10
A Modern Isomorphic Stack with Redux - Part 2
// General imports
import React from 'react';
import ReactDOM from 'react-dom';
import SliderMonitor from 'redux-slider-monitor';
import DevTools from '../lib/tools/devtools';
if(process.env.feature.DEV) {
const store = window.__STORE__;
ReactDOM.render(<DevTools store={store}/>, document.getElementById('devtools'));
}
@mobinni
mobinni / Feed.jsx
Created January 27, 2016 16:13
A Modern Isomorphic Stack with Redux - Part 2
import React, {Component} from 'react';
import {Link} from 'react-router';
import feed from '../../../../lib/modules/feed';
import {connect} from 'react-redux';
if(process.env.BROWSER) {
require('../../../../styles/components/feed.scss');
}
class Feed extends Component {
@mobinni
mobinni / devtools.js
Created January 27, 2016 16:42
A Modern Isomorphic Stack with Redux - Part 2
import React from 'react';
import { createDevTools } from 'redux-devtools';
import LogMonitor from 'redux-devtools-log-monitor';
import DockMonitor from 'redux-devtools-dock-monitor';
import SliderMonitor from 'redux-slider-monitor';
const DevTools = createDevTools(
<DockMonitor toggleVisibilityKey='ctrl-h'
changePositionKey='ctrl-q'
@mobinni
mobinni / server.js
Created February 1, 2016 22:27
A Modern Isomorphic Stack with Redux - Part 2
/**
* Created by mobinni on 07/12/15.
*/
// Imports
import env from './utils/environment';
import express from 'express';
import {webpack as webPackCustomMiddleware, render} from './middleware';
import compression from 'compression';
@mobinni
mobinni / render.js
Created February 1, 2016 22:27
A Modern Isomorphic Stack with Redux - Part 2
/**
* Created by mobinni on 08/12/15.
*/
import webpackMw from './webpack';
import { match } from 'react-router';
import createLocation from 'history/lib/createLocation';
import env from '../utils/environment';
import {renderEngine, renderIndex as renderStatic} from '../engines';
import routes from '../../app/scripts/routes';
import {initialise} from '../../app/lib';