CS 3200 Fall 2022 Project

Please note that this is a living document and will be updated regularly over the next several weeks as the project evolves. Check back frequently.

The 50,000 ft. Overview

Your mission in this project is to design implement a database-driven software product MVP.

In teams of up to 4 students, you will

  • identify the general idea of the product,
  • outline major features of three or more archetype users of the product and describe data view for each of them,
  • develop a conceptual model that incorporates/integrates the archetypical users’ views of the data,
  • iterate on the conceptual model and develop a logical model for a relational database,
  • implement that model in MySQL,
  • design and implement a REST API to provide access to the data
  • implement a collection of user interface pages that cohesively represent an MVP for your data product.

Teaming

Your team can consist of up to 4 members from either of Dr. Fontenot’s CS 3200 sections in fall 2022. You could also choose to do the project individually, in a team of 2 or a team of three. However, no teams larger than 4 will be allowed.

General Architecture Overview

The figure below gives you a high-level overview of the project’s architecture.

On your local machine/laptop, you’ll run two Docker containers: MySQL Server and the Flask API service.

  • The AWS Docker documentation describes it as follows: “Docker is a software platform that allows you to build, test, and deploy applications quickly. Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime.” We won’t be deploying on AWS, but this description was on-point in my opinion. Once you have a system set up to run in Dockerized containers on your development platform, they can be deployed to production fairly easily to a system like AWS, Azure, etc.
  • MySQL is a popular relational database management system. You may have also heard of MariaDB.
  • Flask is a light-weight framework written in Python in which you can build web apps, REST APIs, etc. In is very lean by design, but extensions provide tons of additional functionality.
  • Typically, services like MySQL, containers, etc running on your laptop cannot be accessed from the public internet very easily. Think firewalls, no domain name, and other useful impediments to the security of your system from being breached. However, sometimes you want to specifically allow certain access from the public internet. ngrok allows you to run a small service on your laptop (not in a container by the way) that create a private tunnel to the ngrok system. This will allow you to link up the AppSmith server running in the cloud to your REST API running on your laptop.
  • AppSmith (also check out this YT Video) is marketed as a low-code, open source platform for building and maintaining internal software tools such as dash boards, admin panels, and simple CRUD applications. While fairly straight forward and low-code, it will provide sufficient functionality to build a UI for this project. You can create access to data sources (such as your REST API), create queries, and use a drag-and-drop designer to build out the UI linking various components to the queries you create. You’ll develop your UI on an AppSmith server I am hosting in the cloud which will then connect to your REST API via ngrok running on your local machine.

Project Phases

Project Phase 1

Project Phase 2

Project Phase 3

Project Final Deliverables

Extra Resources

Python, Flask, and Docker

Flask Video Tutorial