This MEAN application was built in a week, in a two-person team, consisting of David and I, to solidify our knowledge of AngularJS along with token authentication we gained in class at General Assembly.
Prerequisites: MongoDB installed and mongod
running
- clone or download repo
- install dependencies in the same directory:
yarn
(or your package manager's equivalent command) yarn start:server
yarn start:client
, and openhttp://localhost:8000/
in your browser if it doesn't launch automatically
RuffTrade is an app where users can arrange to look after other users' pets, similarly to BorrowMyDoggy. Before registering or logging in, users can only view pets' and owners' profiles. When logged in, it is possible to book a particular pet for a specified time period, leave reviews, add pets (as well as edit and delete them), etc.
The project's requirements were as follows:
- Use Mongo, Node & Express to build a server-side API
- Your API must have at least 2 related models, one of which should be a user
- Your API should include all RESTFUL actions for at least one of those models
- Include at least one referenced or embedded sub-document
- Include automated tests for at least one resource
- Use Angular to build a front-end that consumes your API
- Use SCSS instead of CSS
- Use Webpack & Yarn to manage your dependencies and compile your source code
Back End | Front End | Other |
---|---|---|
Node.js (v10.11.0) | AngularJS (v1.7.1) | Git |
Express.js (v4.16.3) | JavaScript (ES6) | GitHub |
MongoDB (v4.0.2) | HTML5 | Trello |
Mongoose (v5.3.12) | CSS3 | Insomnia |
bcrypt (v3.0.2) | SCSS | Heroku |
JSON Web Token (v2.1.3) | Bulma | |
Moment.js (v2.22.2) | ||
Leaflet.js (v1.3.4) | ||
Mocha (v5.2.0) | ||
Chai (v4.1.2) |
- OpenStreetMap
In the planning stage we sketched out a few broad wireframes.
images coming soon
Our team used a Trello board to keep track of tasks, progress and blockers. It was very useful to know what the other person is currently working on.
coming soon
Our instructors divided the class into several groups for this project. It was the first time we worked on the same codebase individually, which also taught us about Git branching, merging and merge conflicts. After a planning session, David and I started the project with pair programming, and then branched off (pun couldn't be helped). I set up the backend routes and controllers, while David started to put together the data for our API. Later on we tried to divide tasks in a way that we're both challenged, and when we couldn't solve a problem we asked each other for help.
- Figuring out how to use Git in a team took some time, but once it clicked I saw how powerful and useful tool it is. Despite having a few problems and losing a few lines of code it made me a lot more confident at using it.
- Planning in a team is also more difficult than in a solo project. We ended up having to re-plan our model and the way our reviews worked, which was frustrating and took time, but confirmed to me how important it is to think ahead.
- I learned to work with and really appreciate new tools (as mentioned earlier with Git), mainly the REST client Insomnia, which we used to make sure our back end was working properly before moving on to the front end. That helped us avoid some potentially tricky problems!
If I had the time I'd like to add a quicker filter on the Menagerie page, that updates the results as user types. Also having results listed by distance, and showing how far a pet is from a user would be a great addition.
Feel free to check out my Portfolio with more projects, or LinkedIn profile.