Final Project Guidelines

The final project is a large-scale, full-stack, responsive application that should showcase your abilities as a developer and be the capstone of your portfolio. You will present the application on Demo Day.

The purpose of the final project is to showcase your abilities as a developer, not to create the Next Big Thing (if you can do both, kudos). Make sure to decide beforehand what you think your greatest strengths are, and use your application and presentation as a platform to showcase those strengths. Together, your final project and portfolio should tell a story about what sets you apart from other developers, so that you can stand out when seeking employment.

For example, if you have graphic design background, you should nail the graphic design, in addition to the technical aspects, so that you can tell the story of your diverse experience. If you have business acumen, you could develop an idea that shows your ability to create a viable business idea and execute a minimum viable product quickly. This doesn't have to be anything spectacular, just choose some strength about yourself that you can showcase with the application idea or the technical choices you make. Ask your instructor if you need help with this.

Requirements

Project Management-

  1. Make regular commits each day (at least one commit per person per day)
    1. Failure to commit will forfeit graduation
  2. Your Project proposal to your instructor must start with an elevator pitch:
    1. 15 to 25 words of what your app does
  3. Before starting development, you must create wireframes (hand sketches are fine)
  4. You must document at least 8 User Stories about your app
    1. "As an admin user, I want the ability to create courses so that learners can see what courses are available."
    2. User stories follow this structure: "As a ________ I want _______ so that ________"
  5. You must write a README that lists all the technologies and APIs used in the project.

Backend-

  1. Build a django project with user authentication and authorization, unless you receive written permission from the instructor not to
  2. Use data stored in a database
  3. Build a RESTful API in Django using Django Rest Framework
  4. Include at least one (1) image upload
  5. Your django application must have tests

Frontend-

  1. Build professional looking UI (beutiful)
  2. Build responsive UI that works on both desktop and mobile
  3. Build a user interface in React (JavaScript)
  4. Implement CRUD functionality with React
  5. Your react application must have tests

General-

  1. Integrate at least one 3rd party API
  2. Use at least one technology or package we haven't covered in class
  3. Your application must be deployed to Heroku and the URL for the deployed site should be in your README and in your repo description.
  4. All code should conform to best practices (pep 8, google js style guide, airBNB react style guide) and be DRY
  5. If told a programming joke, you're required to laugh. Though this should be natural at this point.

Pitching The Projects

Start thinking about final projects ahead of time, and meet with your instructor if you're devoid of ideas.

Make sure your projects are centered around things you truly care about; bee-keeping, beer, dancing, hiking, basketball, etc. This makes a huge difference and can make the project a lot of fun.

Ask Your Peers for Feedback

Community feedback is invaluable in keeping scope-creep (a.k.a kitchen sink syndrome) out and making sure the projects are the right mix of ambition, talent, feasibility, and hubris (a careful mixture of all four is required, IMHO).

Peer code reviews are also extremely helpful.

Start Small, Grow with Agility

see https://pickcrew.com/how-to-build-an-online-busine... for more on this

3rd Party API Testing

During week 9 of the course you are required to test your 3rd party API and verify that it is suitable for your needs. On Monday of Week 10 (first day of final projects) you are required to demonstrate that your API is suitable by running an api_test.js or api_test.py file that makes an a request to the selected API and gathers data that you will use for your final project. Failure to have this complete puts you in jeopardy of not completing in the final 3 weeks.

Final Project Q&A

  1. Where do we have to be during final projects? In the lab? Home?
    1. Monday through Thursday, be at Carolina Code School's campus by 10 am for a short standup meeting. We will be holding some small lectures here and there, and the instructor staff will be helping to answer questions. If you don't show up, ask questions, and drive your project in this crucial 3-week period, you won't receive career support.
    2. Fridays WE WILL STILL HAVE HUDDLE AT 9 AM!!! followed by a short standup meeting.
  2. How often will lectures happen, and will they be optional?
    1. There is no set lecture schedule during final projects.
    2. Students will be notified in Slack ahead of time if a lecture is planned, and will be informed whether or not the lecture is optional.
    3. Any planned lectures during this time will be kept to a maximum of 1.5 or 2 hours.
  3. How often do we check in with the instructor?
    1. You must check in with your instructor each morning during standup.
  4. How much job-related stuff should I be doing?
    1. This is a case-by-case basis, but Carolina Code School staff will be sharing job-related resources to help kickstart the job search process. Best rule of thumb:
      1. During final projects, do two 1-hr job searches each week. That means, pick two evenings (e.g. Tues, Thurs), schedule them on your calendar (to get alerts so you don't forget), and don't do anything more. The goal of the final project time should be primarily working on your final project.
      2. During final projects, spend a little time every day (25 minutes?) working on your portfolio. Schedule this on your calendar.

Resources

Check out these TED Talks to help you get ready to speak in front of a crowd.