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
Mobile
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
directorycd 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: useifconfig
to get your local IP address)
- Modify
- Setup
- API: Install packages and database setup (migrations and seed)
cd api
andnpm run setup
- Webapp: Install packages
cd web
andnpm install
- Mobile: Install packages
cd mobile
andnpm install
- API: Install packages and database setup (migrations and seed)
- Development
- Run API
cd api
andnpm start
, browse GraphiQL at http://localhost:8000/ - Run Webapp
cd web
andnpm start
, browse webapp at http://localhost:3000/ - Run Mobile
cd mobile
andnpm start
, browse mobile on either emulator or using Expo on your mobile phone
- Run API
- Production
- Run API
cd api
andnpm run start:prod
, creates an optimized build inbuild
directory and runs the server - Run Webapp
cd web
andnpm run start:prod
, creates an optimized build inbuild
directory and runs the server
- Run API
Resources and Inspirations
- โ๏ธ Opinionated project architecture for Full-Stack JavaScript Applications - GitHub
- ๐ Simple Fullstack GraphQL Application - GitHub
- ๐ Universal react application with server side rendering - GitHub
- Container Components - Medium Post
- Zero to GraphQL in 30 Minutes - YouTube
- Building a GraphQL Server YouTube Playlist
- Universal JavaScript Web Applications with React by Luciano Mammino - YouTube
- Building Youtube UI in React Native in 30 Mins - YouTube
- Building Stellar Mobile UX With React Native - YouTube
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.
Donate
If you liked this project, you can donate to support it โค๏ธ
Hire me
Looking for a developer to build your next idea or need a developer to work remotely? Get in touch: atul.12788@gmail.com
License
Copyright (c) 2018 Atul Yadav http://github.com/atulmy
The MIT License (http://www.opensource.org/licenses/mit-license.php)