MrCloud / crate

πŸ‘•πŸ‘–πŸ“¦ A sample web and mobile application built with Node, Express, React, React Native, Redux and GraphQL. Very basic replica of stitchfix.com / krate.in (allows users to get monthly subscription of trendy clothes and accessories).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crate

Crate πŸ‘•πŸ‘–πŸ“¦

Get monthly subscription of trendy clothes and accessories.

  • API built with Node, GraphQL, Express, Sequelize (MySQL) and JWT Auth
  • WebApp built with React and Redux along with Server Side Rendering (SSR) / SEO friendly
  • Mobile (Android and iOS) Native App build with React Native
  • Written in ES6+ using Babel + Webpack
  • Designed using Adobe Experience Design. Preview it here.

Features

  • Modular and easily scalable code structure
  • Emphasis on developer experience
  • UI components in separate folder which can be swapped for your favorite UI framework easily
  • Responsive UI for React Native to support Mobile and Tablet
  • GraphQL schema with associations
  • Database migration and data seeding
  • User authentication using JSON Web Tokens with GraphQL API
  • File upload feature with GraphQL
  • React storybook demonstrating UI components for web
  • Server side rendering

Useful for

  • Developers with basic knowledge on React exploring advance React projects
  • Developers learning React Native
  • Exploring GraphQL
  • Scalable project structure and code
  • Starter application for Mobile and Web along with SSR
  • Sample project with combination of all above

Screenshots and GIFs

Click on image to view fullscreen and zoom

Desktop

IMAGE

Crate Desktop

Mobile

IMAGE Β· GIF

Crate Mobile

Tablet

IMAGE Β· GIF

Crate Tablet

Core Structure

code
  β”œβ”€β”€ api (api.example.com)
  β”‚   β”œβ”€β”€ public
  β”‚   β”œβ”€β”€ src
  β”‚   β”‚   β”œβ”€β”€ config
  β”‚   β”‚   β”œβ”€β”€ migrations
  β”‚   β”‚   β”œβ”€β”€ modules
  β”‚   β”‚   β”œβ”€β”€ seeders
  β”‚   β”‚   β”œβ”€β”€ setup
  β”‚   β”‚   └── index.js
  β”‚   β”‚
  β”‚   └── package.json
  β”‚
  β”œβ”€β”€ mobile (Android, iOS)
  β”‚   β”œβ”€β”€ assets
  β”‚   β”œβ”€β”€ src
  β”‚   β”‚   β”œβ”€β”€ modules
  β”‚   β”‚   β”œβ”€β”€ setup
  β”‚   β”‚   β”œβ”€β”€ ui
  β”‚   β”‚   └── index.js
  β”‚   β”‚
  β”‚   └── package.json
  β”‚
  β”œβ”€β”€ web (example.com)
  β”‚   β”œβ”€β”€ public
  β”‚   β”œβ”€β”€ src
  β”‚   β”‚   β”œβ”€β”€ modules
  β”‚   β”‚   β”œβ”€β”€ setup
  β”‚   β”‚   β”œβ”€β”€ ui
  β”‚   β”‚   └── index.js
  β”‚   β”œβ”€β”€ storybook
  β”‚   β”‚
  β”‚   └── package.json
  β”‚
  β”œβ”€β”€ .gitignore
  └── README.md

Setup and Running

  • Prerequisites
    • Node
    • MySQL (or Postgres / Sqlite / MSSQL)
  • Clone repo git clone git@github.com:atulmy/crate.git crate
  • Switch to code directory cd code
  • Configurations
    • Modify /api/src/config/database.json for database credentials
    • Modify /api/.env for PORT (optional)
    • Modify /web/.env for PORT / API URL (optional)
    • Modify /mobile/src/setup/config.json for API URL (tip: use ifconfig to get your local IP address)
  • Setup
    • API: Install packages and database setup (migrations and seed) cd api and npm run setup
    • Webapp: Install packages cd web and npm install
    • Mobile: Install packages cd mobile and npm install
  • Development
    • Run API cd api and npm start, browse GraphiQL at http://localhost:8000/
    • Run Webapp cd web and npm start, browse webapp at http://localhost:3000/
    • Run Mobile cd mobile and npm start, browse mobile on either emulator or using Expo on your mobile phone
  • Production
    • Run API cd api and npm run start:prod, creates an optimized build in build directory and runs the server
    • Run Webapp cd web and npm run start:prod, creates an optimized build in build directory and runs the server

Resources and Inspirations

Why open source a project and not a boilerplate or framework?

  • While building a new project with Node, you can basically start scratch, adding libraries and tools as you go on building it further.
  • Comparing with any other languague, you usually start with a framework, for example, Laravel (PHP), Django (Python) or Ruby on Rails (Ruby) which includes a ton of features and codebase which you never end up using.
  • I've personally found, learning by going through a good project codebase step by step while building your own project helps in ease of understanding and remembering

Authors

  • Atul Yadav - GitHub Β· Twitter
  • Ebou Jobe - GitHub
  • Nenad Radovanovic - GitHub Β· Twitter
  • [YOUR NAME HERE] - Feel free to contribute to the codebase by resolving any open issues, refactoring, adding new features, writing test cases or any other way to make the project better and helpful to the community. Feel free to fork and send pull requests.

Support

Become a Patreon

License

Copyright (c) 2018 Atul Yadav http://github.com/atulmy

The MIT License (http://www.opensource.org/licenses/mit-license.php)

About

πŸ‘•πŸ‘–πŸ“¦ A sample web and mobile application built with Node, Express, React, React Native, Redux and GraphQL. Very basic replica of stitchfix.com / krate.in (allows users to get monthly subscription of trendy clothes and accessories).


Languages

Language:JavaScript 98.0%Language:HTML 1.3%Language:CSS 0.7%