CSCI 338: Fall 2025

Software Engineering

CSCI 338: Fall 2025

Project 2 > Introduction to the Project

Congratulations! You’ve made it to the end of Software Engineering. For your final assignment, you’ll build a complete full-stack web application from scratch.

What You’ll Build

Throughout this semester, you’ve worked with individual pieces of a full-stack system. Now it’s time to put it all together and build a complete application that includes:

Development Environment

Code Development

Continuous Integration

Production Deployment

Architecture: Development vs. Production

Development Architecture (Local)

┌─────────────────────────────────────────────────────────────┐
│                    Your Laptop (Development)                │
│                                                             │
│  ┌──────────────┐         ┌──────────────┐                  │
│  │   Browser    │────────▶│  Frontend    │                  │
│  │              │  :5173  │  Container   │                  │
│  │ localhost    │◀────────│  (React)     │                  │
│  └──────────────┘         └──────┬───────┘                  │
│                                  │                          │
│                                  │ HTTP Requests            │
│                                  │ (localhost:8000)         │
│                                  ▼                          │
│                          ┌──────────────┐                   │
│                          │   Backend    │                   │
│                          │  Container   │                   │
│                          │  (FastAPI)   │                   │
│                          └──────┬───────┘                   │
│                                 │                           │
│                                 │ SQL Queries               │
│                                 │ (Docker network)          │
│                                 ▼                           │
│                          ┌──────────────┐                   │
│                          │  Database    │                   │
│                          │  Container   │                   │
│                          │ (PostgreSQL) │                   │
│                          └──────────────┘                   │
│                                                             │
│  All containers managed by docker-compose.yaml              │
│  Code changes reflect immediately (hot reload)              │
└─────────────────────────────────────────────────────────────┘

Key characteristics:

Production Architecture (Railway)

┌─────────────────────────────────────────────────────────────┐
│                      Internet Users                         │
│                                                             │
│  ┌──────────────┐                                           │
│  │   Browser    │                                           │
│  │              │                                           │
│  │  https://    │                                           │
│  │  your-app.   │                                           │
│  │  railway.app │                                           │
│  └──────┬───────┘                                           │
│         │                                                   │
│         │ HTTPS Requests                                    │
│         │                                                   │
│         ▼                                                   │
│  ┌──────────────────────────────────────────────────────┐   │
│  │              Railway Platform                        │   │
│  │                                                      │   │
│  │  ┌──────────────────────────────────────────────┐    │   │
│  │  │         Application Container                │    │   │
│  │  │                                              │    │   │
│  │  │  ┌──────────────┐       ┌──────────────┐     │    │   │
│  │  │  │   Frontend   │──────▶│   Backend    │     │    │   │
│  │  │  │   (React)    │ HTTP  │  (FastAPI)   │     │    │   │
│  │  │  │              │◀───── │              │     │    │   │
│  │  │  └──────────────┘       └──────┬───────┘     │    │   │
│  │  │                                │             │    │   │
│  │  │                                │ SQL Queries │    │   │
│  │  │                                │ (SSL)       │    │   │
│  │  └────────────────────────────────┼─────────────┘    │   │
│  │                                   │                  │   │
│  │                                   ▼                  │   │
│  │                            ┌──────────────┐          │   │
│  │                            │   Railway    │          │   │
│  │                            │   PostgreSQL │          │   │
│  │                            │   Database   │          │   │
│  │                            │  (Managed)   │          │   │
│  │                            └──────────────┘          │   │
│  │                                                      │   │
│  │  Frontend and backend run together in one container  │   │
│  │  Database is managed by Railway (separate service)   │   │
│  └──────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

Key characteristics:

Project Overview

This project is divided into several sections, each building on the previous:

  1. Setup & Git - Project structure, Git repository, GitHub connection
  2. Database - PostgreSQL container configuration
  3. Backend - FastAPI server with CRUD endpoints, models, and database connection
  4. Frontend - React application with API integration
  5. Docker Configuration - Development and production container setup
  6. Continuous Integration - GitHub Actions for automated code quality checks
  7. Cloud Deployment - Railway setup with production database and containers
  8. Working with Containers - Commands for package management and database queries
  9. Enhancements - Ideas for extending your application

Learning Objectives

By completing this project, you will:

Getting Started

This project builds incrementally. Follow each section in order, and don’t skip ahead! Each section includes checkpoints to verify your progress before moving on.

Ready to begin? Start with the Setup & Git section to create your project structure.


← Back to Project 2 Instructions