Skip to content

Latest commit

 

History

History
48 lines (25 loc) · 4.58 KB

requirements.md

File metadata and controls

48 lines (25 loc) · 4.58 KB

Project Requirements

You and your group will use everything you’ve learned over the past six weeks to create a full-stack application that works with real-world data to solve a real-world challenge. Even more than your first group project, this project will provide you with an opportunity to demonstrate your problem-solving skills, which employers will want to see when you begin to interview for development roles. Once again, the user story and acceptance criteria will depend on the project that you create, but your project must fulfill some specific requirements.

The requirements for this project ask you to use the skills and technologies you’ve learned over the past six weeks (server-side JavaScript, RESTful APIs, databases, object-relational mapping, environment variables, templating, and authentication).

You’ll also have to use some of the more conceptual skills you’ve picked up and think like a developer. MySQL isn’t the only relational database management system. Sequelize isn’t the only ORM. And Handlebars.js isn’t the only templating engine. As a developer, you’ll have to jump in and learn new technologies at a moment’s notice, digging into the documentation and learning to make new things work with your code. That’s why you should integrate at least one new library, package, or technology that we haven’t discussed in this course into your application.

Your codebase for this project will be larger and more complicated than the codebase for your first group project. You’ll also have different developers working in different areas at the same time. Structuring your application to follow the MVC paradigm will allow you to enforce this separation of concerns, dividing the data models, the views and design, and the API route controller into their own distinct areas. This will also prepare you for more performant technologies that you’ll learn in the last part of this course, which use similar architecture.

Data is the foundation of full-stack web development. Creating a real-world application means that you can use what you learned about object-oriented programming and object-relational mapping to model real-world objects and processes, using MySQL and Sequelize to connect your application to real data and deploying your application to a service like Heroku that can handle server-side code and data.

Almost every major programming language uses or has its own templating engine. Even applications that don’t use a templating engine use the concepts involved in templating. You’re likely to encounter templating in any job you find. Using Handlebars.js as the templating engine for your view layer will prepare you for this scenario.

RESTful APIs follow REST, one of the most ubiquitous API architectural patterns. They allow developers to perform CRUD operations on the data stored within the database, following some important principles: naming API endpoints in a way that describes the data being interfaced with, using HTTP methods like GET, POST, PUT, and DELETE to accurately describe the actions performed on those endpoints, and using HTTP status codes after performing a request. Many web development roles require knowledge of RESTful APIs, so your applications must follow this pattern.

Finally, you’ll have to place your work in the context of your future career by adding the project to your portfolio. Each module’s Career Connection has prepared you for life after this boot camp; you should know by now that you need finished applications in your portfolio so that employers can see your work.

Your project should fulfill the following requirements:

  • Use Node.js and Express.js to create a RESTful API.

  • Use Handlebars.js as the templating engine.

  • Use MySQL and the Sequelize ORM for the database.

  • Have both GET and POST routes for retrieving and adding new data.

  • Be deployed using Heroku (with data).

  • Use at least one new library, package, or technology that we haven’t discussed.

  • Have a polished UI.

  • Be responsive.

  • Be interactive (i.e., accept and respond to user input).

  • Have a folder structure that meets the MVC paradigm.

  • Include authentication (express-session and cookies).

  • Protect API keys and sensitive information with environment variables.

  • Have a clean repository that meets quality coding standards (file structure, naming conventions, best practices for class/id naming conventions, indentation, quality comments, etc.).

  • Have a quality README (with unique name, description, technologies used, screenshot, and link to deployed application).

  • Finally, you must add your project to the portfolio that you created in Module 2.