Project 2

Overview

This second project is your first foray into building a full-stack application. You'll be building a Node app, which means you'll learn about what it takes to build a functional application from the ground up yourself.

This is exciting! It's a lot, but we'll give you the tools over the next few weeks to be able build what you need, and you get to decide what you do with it. And you get to be creative in choosing what sort of application you want to build!

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 -- scope creep/feature creep is the biggest pitfall for any project!

Technical Requirements

Your app must:

  • Include sign up/log in functionality, with hashed passwords & an authorization flow. You will be able to start your app from the auth boilerplate built w/ in-class code-alongs.

  • Have at least 2 models (more if they make sense) that represents the main functional idea for your app. This doesn't include join tables or the user model which should be part of your class's boilerplate code.

    • Note: If your app idea doesn't really call for more models, let your instructors know and they can suggest ideas for other sufficiently difficult replacements for this requirement.

  • Incorporate at least one third-party API.

  • Have complete RESTful routes for at least one of your resources (models) with GET, POST, PUT, and DELETE

  • Utilize an ORM to create a database table structure and interact with your relationally-stored data

  • Include a readme file that explains how to use your app (also how to set up the db, obtain api keys, what environment variables are needed, etc, so anyone can fork and clone your app then run it locally

  • Have semantically clean HTML, CSS, and back-end code

  • Be deployed online and accessible to the public (we will do a lesson in class on deployment to heroku)

Note: Much of this functionality should already be included in your boilerplate code!

Necessary Deliverables

  • A working full-stack application, built by you, hosted somewhere on the internet

  • 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, and a link to the live site.

Suggested Ways to Get Started

  • Start with wireframes and go through a project planning process. Consider what is your:

    • Goals for each 'sprint'

    • MVP

    • Stretch Goals

  • 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 to build

  • Write pseudocode before you write actual code. Thinking through the logic of something helps.

Useful Resources

Project Feedback + Evaluation

  • Project Workflow: Did you spend an adequate amount of time on the planning process? Did you use source control as expected? Are your commit messages clear? Do you have a readme file?

  • Technical Requirements: Did you deliver a project that met all the technical requirements? Given what the class has covered so far, did you build something that was reasonably complex?

  • Creativity: Did you added a personal spin or creative element into your project submission? Did you deliver something of value to the end user (not just a login button and an index page)?

  • Code Quality: Did you follow code style guidance and best practices covered in class, such as spacing, modularity, and semantic naming? Did you comment your code as your instructors as we have in class?

  • Problem Solving: Are you able to defend why you implemented your solution in a certain way? Can you demonstrated that you thought through alternative implementations? (Note that this part of your feedback evaluation will take place during your one-on-one code review with your instructors, after you've completed the project.)

  • Total: Your instructors will give you a total score on your project between:

Score

Expectations

0

Incomplete.

1

Does not meet expectations.

2

Meets expectations, good job!

3

Exceeds expectations, you wonderful creature, you!

This will serve as a helpful overall gauge of whether you met the project goals, but the more important scores are the individual ones above, which can help you identify where to focus your efforts for the next project!

Last updated