For this assessment you'll be creating a CRUD, MVC app using Sinatra. This app should be a custom app that is created to track something important to you, whether that's your golf club collection, video games, or travel destinations. Essentially, you're building a simple Content Management System (CMS) using the tools you've learned thus far.
Project reviews are focused on preparing you for technical interviews. Treat project reviews as if they were technical interviews, in both attitude and technical presentation.
During your project review, be prepared to:
- Go through your app and show us how it meets the requirements. ~10-15 min.
- Explain your code from execution point to exit point. We're making sure you wrote it and understand how it works. ~10-15 min.
- Live code. This could mean refactoring or adding a feature as an exercise to make sure you're comfortable working with your code. ~10-15 min.
If any requirements are missing or if significant gaps in understanding are found, be prepared to do any or all of the following:
- Extend the application with a new feature, more data, a different domain etc.
- Submit an improved version
- Meet again for another project review
What won't happen:
- You won't be yelled at, belittled, or scolded
- You won't be put on the spot without support
- There's nothing you can do to instantly fail or blow it
- Build an MVC Sinatra application.
- Use ActiveRecord with Sinatra.
- Use multiple models.
- Use at least one
has_many relationship on a User model and one
belongs_to relationship on another model.
- Must have user accounts - users must be able to sign up, sign in, and sign out.
- Validate uniqueness of user login attribute (username or email).
- Once logged in, a user must have the ability to create, read, update and destroy the resource that
- Ensure that users can edit and delete only their own resources - not resources created by other users.
- Validate user input so bad data cannot be persisted to the database.
- BONUS: Display validation failures to user with error messages. (This is an optional feature, challenge yourself and give it a shot!)
- Create a new repository on GitHub for your Sinatra application.
- When you create the Sinatra app for your assessment, add the spec.md file from this repo to the root directory of the project, commit it to Git and push it up to GitHub.
- Build your application. Make sure to commit early and commit often. Commit messages should be meaningful (clearly describe what you're doing in the commit) and accurate (there should be nothing in the commit that doesn't match the description in the commit message). Good rule of thumb is to commit every 3-7 mins of actual coding time. Most of your commits should have under 15 lines of code and a 2 line commit is perfectly acceptable.
- While you're working on it, record a 30 min coding session with your favorite screen capture tool. During the session, either think out loud or not. It's up to you. You don't need to submit the video, but we may ask for it at a later time.
- Make sure to create a good README.md with a short description, install instructions, a contributor's guide, and a link to the license for your code.
- Make sure to check each box in your spec.md (replace the space between the square braces with an x) and explain next to each one how you've met the requirement before you submit your project.
- Prepare a short video demo with narration describing how a user would interact with your working application.
- Write a blog post about the project and process.
- When done, submit your GitHub repo's URL, a link to your video demo, and a link to your blog post in the corresponding text boxes in the right rail. Hit "I'm done" to wrap it up.
You may not use a blog application or Twitter clone for your project, as we have used these as examples in the curriculum.
- If you make a mistake, correct yourself! We all make mistakes, I promise.
- Think on your feet. Feel free to look things up while you're pairing with us. You'll be asked to expand on concepts you implemented and you will be pushed to the edge of your knowledge.
- Explain the details. We're curious!
- Don’t worry if your code isn’t perfect the first time - focus on getting something working, then refactoring to improve it.
Make no little plans.
- You're going to learn a ton. We will give pointers and show you ways to improve your code. This isn't telling you that your code is wrong, it's simply us teaching. Whatever you don't quite understand will be explained.
- Be proud of your project and your code, and show confidence in it.
- Present yourself and your project in the best way possible.
- Be open to feedback, both positive and constructive.
- Remember, the interviewer is a person too. Be nice to them!
- Trust yourself.
- Trust us - our goal is to help you be successful in achieving your goals.
- We understand that this process can be stressful. We’re here to help you through.
- Use the best technical vocabulary you can. We’ll help you with the words you can’t remember, or if you’re unsure about how something is pronounced.
- Ask questions! Curiosity and willingness to learn are hugely valued in our industry. If you haven’t heard of something, that’s okay - use this opportunity to learn about it!
Example Domain - Golf Club Organizer
Securing Passwords in Sinatra
Mechanics of Sessions
Video: Sinatra app from scratch