Fall 2026 Course Project
Due: 11:59 pm Dec 6, 2026
| Version | Date | Changes |
| 1.0 | 1/21/2026 | Original specifications |
Overview
This is an individual project, so you can claim to be a full-stack developer!
Your project is to create a web-database application for our baseball database. The application must support users,
who can sign up through the website.
User information should be secure.
The project must follow the flask tutorial covered in class as part of Asynchronous Monday. On the first access
to the web site, the user must be presented with the option to login or register. For the registration, the user must
submit an unique username and a password. The application must securely store the user information in a table
called users. The SQL command to create the table and to populate it with an original user must be part of your submission.
Once logged in, the user should be able to pull a franchise name from a drop down box. The application will randomly
select a player or a manager that played(managed) at least 1 game for the franchise. All players and managers are equally
likely to be selected. For players, it will generate
the following report for that player:
- The number of seasons and games played by that player for that franchise
- A list of the different positions played by that player for that franchise
- The total number of seasons played by that player in baseball
- A list of any awards or accomplishments achieved by that player (all-star game appearances, hall of fame votes, etc)
For managers, it will generate the following report:
- The number of seasons and games managed by that manager for that franchise
- The total number of seasons managed by that manager in baseball
- A list of any post-season series appearances the team enjoyed under that manager. Any manager will get credit for any post-season games for
the team in that year.
The system will remember all franchises selected by eash user in the database.
There should be a cheat button. When the cheat button is selected, a list of players who played in an all-star game for that franchise
is presented. Note that some teams don't have any all-star players.
Each player in the list is a link that will generate a page as described above.
There should be a list button. When the list button is selected, a list of 20 random players for that franchise is generated.
Each player in the list is a link that will generate a page as described above.
There should be a managers button. When the managers button is selected, a list of managers for the franchise WHO WERE NEVER PLAYERS is generated.
Each manager in the list is a link that will generate a page as described above.
There should be a history button that shows the last 5 franchises selected by the user. Each franchise in the list will set the default team to that
franchise and randomly generate a page for a player from that franchise. All future selections will use this franchise.
Requirements
All projects must:
- Use the MariaDB relational database baseball that we used in the class
- Provide a file yourlastname.sql that creates the user table in the database
- Use Flask as your development backend
- Set the project name in .flaskenv
- You may not touch any database other than baseball.
- You may change the baseball database in any way needed for the project. These commands should be included in the yourlastname.sql file.
- Use ONLY these python libraries:
- python 3.13.9
- alembic==1.17.1
- blinker==1.9.0
- click==8.3.0
- colorama==0.4.6
- dnspython==2.8.0
- email-validator==2.3.0
- flask==3.1.2
- flask-login==0.6.3
- flask-sqlalchemy==3.1.1
- flask-wtf==1.2.2
- greenlet==3.2.4
- idna==3.11
- itsdangerous==2.2.0
- jinja2==3.1.6
- mako==1.3.10
- markupsafe==3.0.3
- numpy==2.3.4
- pandas==2.3.3
- pymysql==1.1.2
- python-dateutil==2.9.0.post0
- python-dotenv==1.2.1
- pytz==2025.2
- six==1.17.0
- sqlalchemy==2.0.44
- typing-extensions==4.15.0
- tzdata==2025.2
- werkzeug==3.1.3
- wtforms==3.2.1
Submission
You must submit the following in a single zip file:
- the SQL file to alter the baseball database as needed (yourlastname.sql).
- all of the python code needed to create your web site within Flask. However, do not submit your virutal environment.
- a dictionary in a file called csi3335f2025.py. It should:
- be called mysql
- contain 4 keys needed to access your database - host, user, password and database.
- be similar to the the example: mysql = {'host':'localhost','user':'web','password':'mypass','database':'yourteamname'}.
We will change this file as needed for grading.
Rubric
Your project will be graded along these guidelines.
- Failure to use the mariadb baseball database from class - automatic zero on assignment.
- Failure to use the flask web development environment and dictionary file - automatic zero on assignment.
- Using any libraries not on the list - automatic zero on the assignment.
- Following the suggested directory structure and successfully launching web server - 10 points
- Creating the required user table (including correct name) - 10 points
- Successful login of user - 10 points
- Successful loading of franchise names in drop down - 10 points
- Successful display of random player data - 10 points
- Successful display of manager data - 10 points
- Successful execution of cheat button - 10 points
- Successful execution of list button - 10 points
- Successful execution of manager button - 10 points
- Inline code documentation - 10 points