About this project
ShellLab is the Project 3 website for ITSV 303, UNIX System Administration, at Texas A&M University.
Team
Shagun, Jack, and Liam (SJL)
How the site is built
| Server | Microsoft Azure for Students VM (Standard B2ats_v2, 2 vCPU, 1 GiB RAM) in Sweden Central, running Ubuntu Server 24.04 LTS |
|---|---|
| Web server | Nginx with PHP 8.3 (PHP-FPM) |
| Database | MariaDB, with a limited-privilege account for the site |
| Front end | Hand-written HTML, CSS, and JavaScript. No frameworks. |
| Dynamic features | Searchable command database, scored quiz with leaderboard, tip board, command of the day |
Security choices
- All database queries use prepared statements, which blocks SQL injection.
- All output is escaped, which blocks cross-site scripting. Visitors can post text but not code.
- Forms carry a CSRF token, a hidden bot trap, and a short wait between posts.
- The site sends a strict Content-Security-Policy, so the browser only runs scripts from this site.
- Database credentials live in a file outside Git, and the web root contains only public files.
- HTTPS through Let's Encrypt and a ufw firewall that allows only SSH, HTTP, and HTTPS.
Design choices
The site nods to the thing it teaches: a terminal. The page is a soft warm gray that is easy on the eyes, with Texas A&M maroon accents and a dark terminal window as the centerpiece. It uses monospace type for commands and a plain sans-serif for reading. Everything works with a keyboard, respects reduced-motion settings, and fits on a phone.