/Project2-ME-r-N-APP-Express

An express app.

Primary LanguageHTMLMIT LicenseMIT

Project2-ME-r-N-APP-Express An express app.



***
  1. Project #2: Building Your First Full-stack Application
  • Groups
    • Will be assigned by your instructional staff.
  1. Overview For this project, you'll be building an Express app, which means you'll more fully understand what it takes to build a functional and useful application from the ground up yourself.

This is exciting! It's a lot, but we gave you the tools over the past 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 in pairs for this project, and you'll be designing the app together. Exercise creativity on this project! Come up with a clearly articulated idea of a problem to solve, sketch some wireframes, think carefully through what models your app will have and how they will be related to each other, write user stories to define what your users will be able to do with the app. You will propose your idea, wireframes, model schemas/relations for your data, and user stories, by your instructors to get their feedback and approval before you begin coding! Remember to keep things small and focus on mastering the fundamentals – scope creep/feature creep is the biggest pitfall for any project!
3. Technical Requirements

Your app must:

  • Store data in a MongoDB database using mongoose
  • Have at least 2 related models (but probably more if that makes sense!) – one representing someone using your application, and one that represents the main functional idea for your app. There must be meaningful relations between the models.
  • Include sign up/log in functionality, with encrypted passwords & an authorization flow. Keep this simple—we want you focusing on the logic of the app.
  • Include wireframes that you designed during the planning process.
  • Have many sequential commits reflecting carefully adding one functionality at a time.
  • Have semantically clean HTML and CSS
  • Be deployed online and accessible to the public. (We're going to teach you how to deploy on heroku with MongoDB Cloud Atlas.)
  • Necessary Deliverables
  • A working full-stack application, built by you with Express and Mongoose, that contains all of the RESTful routes, and performs full CRUD, storing data in MongoDB (to be full stack wouldn't you need Angular or React?)
  • Your app must be 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, what problem your app solves/why you made it, the approach taken, installation instructions/requirements, contributor information, unsolved problems, forthcoming features, etc. a word docx file was made in the beginning. It can/will be used as the basis for this requirement when the project is done.
  1. Proposal: For the proposal stage, the README.md should include:
  • (links to) Wireframes of your app: There should be a drawing for every differnt way your site might look. These drawings can be hosted somewhere & linked in your readme.(hosted on onedrive) You can use a wireframing app like balsamiq, or you can make nice pencil drawings on good old fashioned paper.

https://1drv.ms/u/s!AtxzeA92Sv1PgolEmsugvkSLpKHJug.

  • (a link to) User stories: A finely-detailed bulleted list of exactly what a user will be able to do with your app. "User should be able to .....". Or: "As a user of the site, I want to be able to ___________, so that I can ____________". Your MVP (most basic version of the site that "does the thing") should be clearly defined, and you should probably have a few Nice-to-Haves you might get to, and a few Stretch Goals you probably won't get to but boy wouldn't it be cool if you did.

  • Your model schemas with descriptions of how they relate to each other


  1. Strategies
  • Begin with the end in mind. Know where you want to go by planning with wireframes & user stories & data, so you don't waste time building things you don't need. Keep it lean and keep it elegant.

  • It can be very helpful to write throwaway code to solve short term problems

  • Use branches on git

  • 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. The mongoose documentation is alright, and the express docs are absolutely amazing.

  • 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. (see docx file and final readme file)

  • Write pseudocode before you write actual code. Thinking through the logic of something before you code it is critical. Write out what a route should do before you write the database queries in that route.


Potential Project Ideas //Cheerups?? //The world is a depressing place.??

Your task is to create an app that will allow people to create and share "cheerups" - happy little quips to brighten other peoples' days. Cheerups will be small - limited to 139 characters. Members will be able to promote Cheerups that they like and maybe even boost the reputation of the Cheerupper.

  • Bookmarket You will create an application where users can bookmark links they want to keep.

But what if users could trade bookmarks for other bookmarks? Or sell bookmarks for points? Or send bookmarks to your friends. Or something even crazier.

  • Recipes app Users will be able to register and create recipes, maybe with ingredients. Recipes and ingredients could be named and described by their owners. Users will be able to view other users' recipes. Perhaps users could rate and/or like and/or comment on and/or rate other users' recipes..

  • Some kind of store or trading or exchanging site Users can CRUD products for trade, other users can browse them. Maybe they can arrange trades with each other.

  • Travel blog Users can make posts describing their adventures somewhere. Other users could browse the posts and maybe comment on them?

  • Management software for a business Restaurants are good example here, maybe employees have shifts that are scheduled at a certain time. Maybe managers can schedule those shifts? Or perhaps a server could put in orders and a kitchen could make them? Or maybe some kind of tool for managing expenses?

Useful Resources

  1. Heroku (for hosting your back-end)
  2. Writing Good User Stories (for a few user story tips)
  3. Presenting Information Architecture (for more insight into wireframing)
  4. Project Feedback + Evaluation

The primary feedback you will receive is in 1-on-1 discussion of your approach and any substantial problems you are having during the process of building your project. Your instructors will coach you on how to model your data, proper patterns for RESTful and MVC apps, and help you think through how you might solve the serious blocks you encounter in your project. You will also have daily checkins in stand-up format each day, and will be expected to articulate exactly what you have accomplished since the previous standup, anything you're blocked on that's keeping you from moving forward, and exactly what you are shooting to accomplish by the next day's standup.
**Passing requirements: ** To pass, you must deploy and present (on the presentation date) a project that achieves the MVP you proposed, and meets the minumum technical requirements and deliverables specified above, as well as following the programming principles we've taught you: proper semantics, good commenting, separation of concerns, KISS, etc.

As a guide, here are the primary ways that your project will be evaluated.

  1. Your instructor will review you code with you in person in the weeks following the project.

  2. 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)?

  3. 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?

  4. Creativity: Did you add 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)?

  5. 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?

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