Description: An anonymous penpal website meant to promote better mental health.
- Operating System: MacOS or Linux
- Node.js (I recommend installing with NVM)
- Homebrew (to install MongoDB)
npm install
# Install MongoDB
brew tap mongodb/brew
brew install mongodb-community
Start the database
brew services start mongodb-community
Start the client
npm run dev
Start the server
npm start
Check Mongoshell
cd server
show dbs
use mern
show collections
> db.{collectionNAME}.find()
> db.{collectionNAME}.count()
> db.{collectionNAME}.find({id:''})
npm run build
npm start
npm test
npm run lint
npm run lint:fix
npm run test:verbose
npm run test:watch-client
npm run test:watch-server
Note: This is now a github template project. This makes copying the contents of the project into a new repo very simple.
To setup your own project, you will need to copy the contents of this project into a new repo. You will need to update the content in these files to names of your project and yourself:
- package.json: name, version, description, repository, author, bugs, homepage
- LICENSE: (update to your preferred license)
- client/index.html: description and title
- this README.md
This is also a good time to go through the included libraries to add or remove features that you want.
After this you can commit the files into a new repository and push up to your github. You can now start updating files in your client to begin working on your own project!
- Webpack conveniently bundles your code for you.
- Babel lets you use ES6/7 features.
- CSS pre-processor setup for LESS and SASS lets you keep your styles clean and organized.
- ESLint helps you maintain a high level of code quality.
- Jest gives you a robust testing framework to make sure your code works.
- client
- api
- assets
- images
- icons
- components
- atoms
- molecules
- organisms
- templates
- pages
- environment
- hooks
- store
- actions
- reducers
- thunks
- tests
- styles
- utils
- server
- config
- database
- routes
- scripts
Component Heirarchy:
Environment > Pages > Templates > Organisms > Molecules > Atoms
This is based on atomic design. Learn more about atomic design.
React - View Library
Redux - State Manager
Webpack - Module Bundler
Express - Node Application Framework
MongoDB - Document Database
Mongoose - MongoDB Framework
Passport - Authentication Framework
React Notifications Component - Notification System
Bulma - CSS Framework
React Bulma Companion - Bulma Component Library
FontAwesome - Icons
Ramda - Functional Library
date-fns - Date Functions Library
SuperAgent - HTTP Request Library
ESLint - Code Linter
Jest - Testing Framework