A local listing service with want ads and reputation management
- Product Owner: Yasser Mahmud
- Scrum Master: Aman Thapar
- Development Team Members: Jonathan Hawley-Peters
- Node 6.5.x
- MongoDB 3.2+
- Jenkins 2.19
This is a React/Redux app with a Node/Express server and a MongoDB database. The project has been set up to run tests with Mocha, Chai-JQuery, and React Test Utilities so we can live our TDD dreams.
To start, you need a .env file in the root directory with PORT, DBPATH and SECRET variables.
From within the root directory:
npm install
webpack --watch
grunt local
npm run test:watch
- The webpack --watch command will constantly rebuild only the changed parts of the project
- The grunt local command will run your dev server on localhost:3000
- The npm run test:watch command will run your test every time it detects a change in the filesystem. You may want to turn off webpack watch.
There are two files that matter for development in root: /src and /test. An exhaustive listing of the entire file structure can be found in Dir_Struct.md
- client
- public
- server
- index.js
/client has source files for the front end React/Redux app. Inside /client, the /actions, /constants, and /reducers folders contain the code that manages Redux state. /components has regular react components, while /containers has React/Redux components.
Finally, at the top level of /client index.js is the entry point for the React App, and routes.js controls the front end routing for the single page application.
- actions
- components
- server
- test_helper.js
The test_helper.js contains a bunch of fun tools that allow us to mock a DOM using jsdom while running tests in the command line, add testing feartures to react components with Reach Test Utilities, and simulate events on the DOM using Chai-JQuery. The folders in /test contain tests for code in the /client directory, but the file structure is shallower for ease of navigation.
View the project roadmap https://waffle.io/hrr18-trifecta/mylocal on waffle.io
- Node
- MongoDB
- React
- Redux
- Mocha
- ChaiJQuery
- Google Maps
- Eventbrite
- Yelp
See CONTRIBUTING.md for contribution guidelines, or if you're feeling bold:
- Fork it!
- Create your feature branch: git checkout -b my-new-feature
- Commit your changes: git commit -am 'Add some feature'
- Push to the branch: git push origin my-new-feature
- Submit a pull request :D