Intro to Backend Development
  • Introduction
  • SP25 Syllabus
  • Apply to Take the Course
  • Getting Started
  • Weekly Feedback Form
  • Ed Discussion
  • Intro to Backend SP25 Google Calendar
  • Cheat Sheets
    • Assignment Requirements
    • Assignment FAQs
    • Error FAQs 😢
    • Concept FAQs
    • Postman
    • Command Line
    • Virtual Environment
  • Chapters
    • 1. Routes
      • Pre-Class TODO's
      • Lecture
      • Assignment Handout
      • API Specification
    • 2. Databases
      • Pre-Class TODO's
      • Lecture
      • Demo
      • Assignment Handout
      • API Specification
    • 3. Relational Databases
      • Pre-Class TODO's
      • Lecture
      • Demo
      • Assignment Handout
      • API Specification
    • 4. Abstractions
      • Pre-Class TODO's
      • Lecture
      • Demo
      • Assignment Handout
      • API Specification
    • 5. Containerization
      • Pre-Class TODO's
      • Docker Installation
      • Lecture
      • Demo
      • Assignment Handout
    • 6. Deployment
      • Lecture
      • Demo
      • Assignment Handout
    • 7. Images
      • Demo
      • Assignment Handout
    • 8. Authentication
      • Lecture
      • Demo
      • Assignment Handout
    • (Work in Progress) OAuth
      • Pre-Class TODO's
      • Lecture
      • Demo
      • OAuth 2.0 vs OpenID
      • Flask / OpenID example
  • Additional Topics
    • Git and Github
    • HackOurCampus
  • Other AppDev Courses
    • Intro to iOS Development
    • Intro to Android Development
    • Intro to Digital Product Design
  • Deprecated
    • Previous Semester Syllabi
      • FA22 Syllabus
      • SP22 Syllabus
      • FA21 Syllabus
      • SP21 Syllabus
      • FA20 Syllabus
      • SP20 Syllabus
    • Deployment Pre-Class TODO's
    • PA6 Assignment Handout
    • Deployment Demo
    • Final Project (Spring 2019)
      • Final Project Award Winners
Powered by GitBook
On this page
  • Introduction
  • Team Requirements
  • Project Requirements
  • 1. GitHub Repository
  • 2. Database
  • 3. Routes
  • 4. Deployment
  • 5. API Specification & Documentation
  • Extra Credit Challenges
  • 1. Draw data from an external API
  • 2. Integrate with a communication API
  • 3. Support raw file storage
  • 4. Add user authentication
  • Competition Challenges
  • 1. Best Documentation
  • 2. Best Application Design
  • 3. Most Creative Application
  • 4. Best Security
  • 5. Best Overall Backend

Was this helpful?

  1. Deprecated

Final Project (Spring 2019)

Contributors: Conner Swenberg

Due Date: Sunday 5/10, 11:59pm

Introduction

Throughout the course, you have practiced building backends to fulfill some predefined API specification. Know that you have experience constructing routes, designing a database, and deploying application code, you are challenged to create a backend completely of your own design.

Traditionally, we have brought students in all of our courses together to build a fully functional application. Unfortunately, this semester will miss out on that opportunity, but you will still experience the same level of challenge.

This assignment is worth 30 points and is mostly graded on completion. We want you to demonstrate your new skills while having fun designing a new kind of application.

There are many extra credit opportunities as well which draw from previous challenges in the course. Additionally, there are 3 challenge competitions for fun and will not count towards extra credit, just pride.

Team Requirements

This will be a partner project, but those who wish to roll solo can do that as well. Groups of 3 or more are not allowed.

Collaborating on a codebase is difficult without a tool to help you. We will show you how to use Git, an industry standard for collaborating on software. We strongly recommend students to share responsibility in designing and coding in all parts of the project (i.e. routes, database, deployment) and intend more for this project to be like pair-programming.

Project Requirements

All of the following are requirements for the project and will be graded on a complete/incomplete basis. We believe each is important for your development and breadth of experience.

1. GitHub Repository

You will not be submitting code on CMS for this assignment; you will instead make a public Github repository and submit the link. Even those who are doing the project solo will be required to make a Github repository; those who collaborate will only need to have one person create the repository to work on.

We also recommend you make your repository on a traditional public account versus Cornell's private enterprise option so that you can more easily share this project with recruiters and anyone else who might want to look!

2. Database

You have been exposed to both the sqlite3 and SQLAlchemy packages for designing database tables and hopefully notice the many benefits of using an ORM. You are required to use SQLAlchemy to build at least one one-to-many relationship and at least one many-to-many relationship. Additionally, you are required to implement some form of nested serialization on related fields (like how we did in PA4).

Additionally you must make your implementation meaningfully different than applications we have built in the assignments so far. This means if you want to build an app overlapping with a to-do, forum, payments, or course management functionality, you should first check with the course instructors to make sure your application will be challenging you enough to design something new. If you build a to-do, forum, payments, or course management application without talking to us first, you risk getting a zero on the final project.

3. Routes

You have built some set of routes in each of the first four assignments and should be accustomed to common design patterns. You must implement at least one route for each operation archetype: create, retrieve, update, delete (CRUD).

We encourage you to use many of the abstractions shown throughout the course for clean code. For example, the use of a DAO is encouraged for your routes, but not an official requirement.

4. Deployment

You have learned how to containerize application code, ssh into a cloud server, and run your application accessible from a public IP. You must containerize your application with Docker and provide us a public server IP to interact with your application.

You should have more than enough credits to keep your server running for over a month so do not take your application down until we have submitted your grade for the final project.

5. API Specification & Documentation

Extra Credit Challenges

If you're on the edge of not passing this course or just want to have fun learning something new, we recommend exploring the following challenges. Successful completion of each will be worth 3 points of extra credit (equivalent to a Tier III challenge).

1. Draw data from an external API

For the context of your application, you may want to populate your database with information on some different service. Your challenge is to integrate with some other backend and transform its data into your own application.

2. Integrate with a communication API

For many applications, automating communication with users and other parties is a huge value-add. In previous assignments we offered integrating with SendGrid's email API as a Tier III challenge for example.

3. Support raw file storage

Many applications demand some form of media that needs to be managed by the backend (i.e. images, video, audio, etc.). In PA4 we offered integrating with Amazon Web Services S3 micro-service as a Tier III challenge. Google Cloud also has its own version called "Cloud Storage".

4. Add user authentication

Applications that are serious about professional use need some authentication system to preserve information security. Chapter 7 covers many authentication schemes for you to draw inspiration from.

Competition Challenges

We want to celebrate the amazing applications you will build with some fun competition. These challenges will not be worth any extra credit or official prize and there will likely be many fantastic backends that do not get an award due to the number of submissions. Each group is capped at winning only one challenge.

1. Best Documentation

We cannot understate the value of high quality documentation which can include API specification, comments within code, and the styling/naming/layout of code in general. Anything that contributes to the ease for someone new to understand your application at any level ranging from high and abstract to low and precise is a marking of a seasoned developer.

This award will go to whoever demonstrates the best documentation standards and code cleanliness.

2. Best Application Design

While we did not deeply discuss the best design principles for applications, we subtly dropped many tips throughout the course. Pretty much all of the design patterns taught in this course apply to all sorts of applications and we want to see how you apply your knowledge to a more complex application than our boilerplate examples.

This award will go to whoever demonstrates quality database design, choice of route interfaces all in the context of a creative application.

3. Most Creative Application

Although there was no app to go with your backend this semester, we still love to see backends that envision a greater idea to fulfill.

This award will go to whoever demonstrates a refreshing idea that serves not only a need in the world but is also creative!

4. Best Security

Security is one of the most important aspects of backend, so much that DevOps is becoming DevSecOps. Developers should always strive to think about the best ways to secure their applications, and taking advantage of our authorization lectures is a good step forward!

This award will go to whoever takes advantage of features of our authentication lecture!

5. Best Overall Backend

Combining all of the aspects of the previous three challenges, the Best Overall Backend will demonstrate high levels of achievement in each category.

PreviousDeployment DemoNextFinal Project Award Winners

Last updated 5 years ago

Was this helpful?

We want you to document how people should interact with your application with an API specification (like we have been providing for you on each assignment). We recommend using for easy templating and supported by Github with .md files. Just add an api.md file or describe your routes within the README.md file made by default with a new git repository. Writing a clear API specification is also important for helping us grade your final project when trying to interact with your application ourselves with Postman to test it.

Feel free to use our styling for API specification or think of your own way to convey the essential information. Additionally you can try popular tools like and for documentation.

markdown
Swagger
Open API