This second project is your first foray into building a full-stack application. You'll be building a Node/Express/SQL app, from the ground up yourself.
You will be working individually for this project, and you'll be designing the app yourself. We hope you'll exercise creativity on this project, sketch some wireframes before you start, and write user stories to define what your users will want to do with the app. Make sure you have time to run these ideas by your instructors to get their feedback before you dive too deep into code! Remember to keep things small and focus on mastering the fundamentals, a Kanban board like Trello will really help here -- scope creep/feature creep is the biggest pitfall for any project!
- Have at least 2 models (more if they make sense) -- ideally a user model and one that represents the main functional idea for your app
- Have complete RESTful routes for at least one of your resources with GET, POST, PUT, and DELETE
- Utilize a data store (most likely Postgres) to create a database and interact with your data
- Include sign up/log in functionality, with hashed passwords & an authorization flow
- Incorporate a CSS Framework like Bootstrap to style your site.
- Include API endpoints in your application. That means, have some /api/ name-spaced routes that return JSON data.
- Incorporate an External API. Examples include Yelp, Tumblr, Facebook, and others on Mashape.
- Allow Image Upload. Using the Multer package and a service like Cloudinary.
- A working full-stack application, built by you, hosted somewhere on the internet (most likely Heroku)
- A link to your hosted working app in the URL section of your Github repo
- A git repository hosted on Github, with a link to your hosted project, and frequent commits dating back to the very beginning of the project. Commit early, commit often.
- A
readme.md
file with explanations of the technologies used, the approach taken, installation instructions, unsolved problems, etc. - Wireframes of your app, hosted somewhere & linked in your readme
- A link in your
readme.md
to the publically-accessible user stories you created
- Begin with the end in mind. Know where you want to go by planning with wireframes & user stories, so you don't waste time building things you don't need
- Don't hesitate to write throwaway code to solve short term problems
- Read the docs for whatever technologies you use. Most of the time, there is a tutorial that you can follow, but not always, and learning to read documentation is crucial to your success as a developer
- Commit early, commit often. Don't be afraid to break something because you can always go back in time to a previous version.
- User stories define what a specific type of user wants to accomplish with your application. It's tempting to just make them todo lists for what needs to get done, but if you keep them small & focused on what a user cares about from their perspective, it'll help you know what ot build
- Write pseudocode before you write actual code. Thinking through the logic of something helps.
- Heroku (for hosting your back-end)
- Writing Good User Stories (for a few user story tips)
- Presenting Information Architecture (for more insight into wireframing)
- [Gitbook External APIs in Node](https://wdi-sg.github.io/gitbook-2018/05-express/express-apis/03apis.html)
- [Gitbook Image Upload with Cloudinary](https://wdi-sg.github.io/gitbook-2018/05-express/additional-topics/express-cloudinary/readme.html)
The project is meant to demonstrate that everyone is minimally capable of applying the things we saw during class.
Given Bloom's Taxonomy students should be able to apply their knowledge of node.js, CRUD and SQL. Students must remember enough of the concepts to to understand how to apply their knowledge / build this project.