You have ~24 hours to produce something compelling using the skills you've honed over the past five weeks.
There are two routes you could take:
- MVP - Bare bones here: Come up with a well-defined, well-scoped idea that meets basic requirements and take the steps you deem necessary to make it a reality OR
- MVP - Starter Kit here: Use the structured guiding requirements to build a CRUD application.
FOR BOTH ROUTES: Before 12:00pm, please fill out a quick form at mks.io/mvp so we know what you're working on. We will review your idea + tech stack and touch base with you if we're not on board.
- Use git to track your progress
- Start with an empty directory and a blinking cursor. Do not use any generators, templates or previous code.
- Your app must contain a server and a client application
- Deploy the app to Heroku
As you work through the project, you may reference public resources and code from past sprints but DO NOT COPY AND PASTE CODE. This is your chance to synthesize material from the past five weeks.
Be prepared to spend no more than 2 minutes demoing and explaining your app to classmates and staff.
This option requires less creativity but allows you to use the MVP project as a time to review.
The following requirements are divided up into the 3 main pillars of an application - the database, server and client. How you choose to implement these requirements is up to you but guidelines are provided below.
- Brainstorm an idea (implement a technology, build a product, make art, etc)
- Wireframe the idea (draw out what the finished product would look like)
- Determine what portion of this could be done in ~24 hours
- Make a list of features and cut the scope down to only the most essential
- Cut the above scope in half again
- Determine what technology makes sense for your project
- Make sure you have all the necessary global tools installed
- These include but are not limited to:
- Node and npm
- nodemon
- git
- Webpack (for React builds)
- Initialize a git repo with
$ git init
(remember to commit often!) - Add and update the
.gitignore
file if necessary (you will want to ignore config files) - Create the
package.json
file and add any necessary dependencies as you work through the project- Don't forget to add any npm scripts you might need. hint: Maybe a script to start your server?
- Do not forgo good planning. Planning is half the battle. Only proceed if you have a clear idea of what your final product will look like.
- Consider what your app needs to store with an MVP-first mindset
- A single table/collection might be all you need
- Use knex/mongoose to connect to your Database
- Use knex/mongoose to build your table(s)/schema
- In a
models
directory, create your model(s) with methods tofetchAll
from a table/collection andaddOne
to that table/collection- etc.
- OPTIONAL: Consider using Firebase, an online NoSQL database that you can use from the front-end directly (via a library)
The server should provide static-file serving and a RESTful API which can be used by the client-side code. Node 6+ supports most common ES6 features. Consider writing your back-end code in ES6.
- In your entry point (index.js), complete a server that accepts HTTP requests
- Create a router
- The handlers should make use of your models
- Test your server in Postman if necessary
The client application should be a single page application, served via the server's static file service. It comprises code that's necessary to interact with the API through a user interface.
For this portion, although you could use any front-end technology, most people prefer Angular.
- Deploy the app! (Be warned, Heroku does not play nice with SQLite. What would it take to use a different database in your production environment?)
- Make sure you create necessary files like the Procfile, and add any environment variables you might need.
- Take at least an hour to prepare your presentation. Prepare, Practice and Present.
- Create a short script, it should guide the viewer through the app by discussing the problem, the solution and the tech stack used.
- Practice the script, making adjustments as necessary to make sure you touch on all of the salient points of your app
- Presentations will move at a fast pace so make sure you are ready.
- Add Authentication to your app. Try using JWT in your implementation.
- Have fun with CSS. A lot of developers have (somewhat) unfounded fears of making things look good but it's a necessary skill.
- Write a couple of tests. Emulate past sprints.