Skip to content

Latest commit

 

History

History
73 lines (47 loc) · 4.84 KB

Project 2 premise.md

File metadata and controls

73 lines (47 loc) · 4.84 KB

Project #2: A Full-stack Application

Overview

The second project is to build a full-stack RESTful application that includes authentication.

You'll be building an Express application that has a Mongo database using the Mongoose ORM.

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:

  • Have at least 2 models – one representing a user and one that represents the main resource of your app, e.g. Restaurants
  • Include relationships - embedded or referenced. Make sure you take the time to consider the best approach before building out your models.
  • The app should include authentication - with encrypted passwords & an authorization flow.
  • Have complete RESTful routes for at least one of your resources with all CRUD actions.
  • You must use SCSS - as this is a key industry skill.
  • Include wireframes - that you designed before building the app.
  • Have semantically clean HTML - you make sure you write HTML that makes structural sense rather than thinking about how it might look, which is the job of CSS.
  • Be deployed online and accessible to the public.

Bonus Requirements

  • Include data from an API - to make your app more dynamic, add some data from an API. You might need to consider CORS issues with AJAX and/or the need to store this external data in your app.
  • Add automated tests - for at least ONE of your RESTful resources.

Necessary Deliverables

  • A working full-stack application - 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, etc.
  • Wireframes of your app - hosted somewhere & linked in your readme.md

Suggested Ways to Get Started

  • 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 and/or wireframes 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.

Useful Resources


Project Feedback + Evaluation

  • Project Workflow: Did you complete the user stories, wireframes, task tracking, and/or ERDs, as specified above? Did you use source control as expected for the phase of the program you’re in (detailed above)?

  • 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?

  • Deployment and Functionality: Is your application deployed and functional at a public URL? Is your application free of errors and incomplete functionality?