Read this entire document before writing a line of code.
- Overview: What is this project?
- Planning & Deliverables: What will I be turning in?
- Technical Requirements: What technologies will I be using?
- Further Exploration: What if I want to do more?
- Deadlines: When is it due?
- Submission: How do I turn in the project?
- Resources & Support: Where can I get help?
- Instructor Groups: Who is my assigned instructor for this project?
- Presentation Guidelines: What should I cover during my presentation?
- Project Feedback: How will I get feedback from instructors?
It's time to put everything you've learned in the past month together! You'll use your knowledge of front-end and back-end web development to create a web application that can be used by friends, family, or any of the other billions of people who use the internet. The type of web application you create is your choice.
The objective of this project is to:
- Apply the skills you've learned by building a web application from the ground up.
- Demonstrate mastery of topics covered during this course so far.
You will be working individually for this project, but we encourage you to get help from your peers and even pair-program on each other's projects when bugs arise.
You must review the following with your instructional team BEFORE you start to code. Create a Trello board that includes your user stories, wireframes, data models (ERD), and project milestones. See the project planning doc for more details.
- Scope: What are you planning to build? What do you reasonably think you can implement in the time period?
- User Stories: Who is your user? What features will your app have?
- Wireframes: Sketch out what each of your pages will look like and how they will work. Consider making a paper prototype to demonstrate and/or test key user interactions.
- Data Models: Draw out the models and any associations for your project in an entity relationship diagram (ERD).
- Milestones: What are major steps to completing the project?
- Feasibility Check: If you're using an external API, make sure you can get that data. If you are using a new tool, go through its getting started tutorial. We will ask to see your results.
- Link to Heroku hosted project, with all core technical requirements and two flexible technical requirements complete.
- Link to source code on GitHub.
- A
readme.md
file with the following:- Description: Short paragraph (2-3 sentences) "elevator pitch" describing what your project does
- Link to Heroku hosted project
- Technologies
- Wish List / Future Development
Your app should have all of the following:
- Express API: Implement a server-side JSON API with Express.
- RESTful Routes: Design your API routes in a RESTful manner.
- MongoDB: Persist data with at least two models in a Mongo database.
- AJAX: Fetch JSON data from your server-side JSON API asynchronously to the client-side.
- jQuery: Use jQuery to manipulate the DOM and listen for events on the client-side.
- Server-Side View Rendering: Render your HTML views with
hbs
. - Client-Side Templating: Use Handlebars.js on the client-side to template API data into your view.
- Data Validation: On the client-side, don't let a user submit a blank form, and give them a visible error message explaining why they weren't allowed to submit (see the jQuery Validate library). In your database, use Mongoose validations for at least one attribute in each of your schemas (see the Mongoose validation docs).
- Testing: Write request specs for 25% of your server routes.
- User Experience: Leverage Bootstrap to kick-start your UX and UI.
- Heroku: Deploy your app to Heroku. Ensure no app secrets are exposed. Do not commit secret keys to GitHub!
Your app should have 2 out of the 4 following options:
- External API: Use an external API to integrate third-party data into your app.
- Model Relationship: Create a one-to-many or many-to-many relationship between two models using embedded or referenced data.
- Authentication: Allow users to sign up, log in, and log out.
- Custom Styling: Go beyond Bootstrap with styles and/or animations customized for your app.
If you want to push yourself and learn something new, optionally consider doing any of the following ideas. Please talk to an instructor beforehand.
- Search: Build a form that allows users to search your data, based on attributes.
- Authorization: Create and implement rules that prevent users from reading/editing/deleting content that belongs to other users. Start with one rule; the specifics are up to you. For example, a good challenge could be saying users cannot delete a post (or other resource) if it is not theirs. (This requires authentication.)
- Email: Send emails with express-mailer.
- Payments: Add payments with Stripe.
- Web-Scraping Use a web-scraper to collect data from a website that doesn't have an API. Example technologies include Casper or Kimono.
- Web Sockets Create an open, real-time connection between your server and client (e.g. live chatting) with a tool like Socket.io.
- Whatever else you can think of!
-
Tuesday, November 24th, 9:17am - Project planning deliverables due! Before beginning work on your project, your idea, project scope, and other planning deliverables must be approved by an instructor.
-
Friday, December 4th, 10:00am - Completed project deliverables due and presentations!
- As you make code changes, frequently commit and push to GitHub.
- To turn in your project, please add the links to your project on GitHub and Heroku to this spreadsheet.
- Documentation, tutorials, Stack Overflow, module notes
- Your classmates - even though this is an individual project, we encourage you to get help from your peers and even pair-program on each other's projects.
- Stand-up every morning at 10:00am with your assigned instructor or DIR
- 1:1 meetings every afternoon with your assigned instructor or DIR
- Breakout review sessions at the beginning of the week
- Instructors and DIR available in the classroom each weekday (will be taking turns)
- Evening TAs after 5pm
Each student has an assigned instructor or DIR, splitting the class into four informal groups. Your instructor or DIR will approve your project, lead your morning stand-ups (with the rest of your group), meet with you for 1:1s, and give you feedback after the project. Outside of those structured activities, you're welcome and encouraged to work with other instructors and students from any group you'd like!
- André
- Cynthia
- Steven
- Alan
- Carlos
- John
- Stanley
- Adam
- Dave
- Trung
- Zohar
- Eddy
- Michael
- Victoria
Project presentations are Friday, December 4th at 10:00am. You will have a maximum of 7 minutes to present. As a guide, please generally cover the following:
- What is your project?
- Why did you build it? (motivation)
- Demo!
- What is something you learned? (show code)
- Shout-outs for fellow classmates.
See the feedback doc for details.