Welcome to the repository! The goal of this project is to maintain an efficient and robust data sytem for managing CTI operations, ranging from student tracking, reporting, and ensuring consistency across our programs.
CTI stands for Computing Talent Initiative. A program spearheaded by Prof. Sathya Narayanan, the goal is to provide pathways for students to successfully transition from higher education into a successful career in the industry. CTI uses a mix of online courses, workshops, and hands-on experiences to prepare students for real-world development.
This project is primarily being developed internally and for internal use. Many planning documents are internal as well, so if you're interested in contributing, please contact the repository owner, Nicolas Guerrero.
You'll need both a PostgreSQL Database and a MongoDB Database. You'll also need admin permissions to set-up the tables/collections. Make sure you have the following connection strings set (either through a env file, Heroku's conifg vars, or an environment variable). Additionally, if you are building from scratch, make sure to install the uv dependencies, since you'll need SQLAlchemy and Pymongo to run the initialization scripts.
If you are part of the development team, you should have received a .env file with credentials for the development databases.
CTI_POSTGRES_URL="postgresql+psycopg://USER:PASS@HOST:PORT/DATABASE?sslmode=require"
CTI_MONGO_URL="mongodb+srv://USER:PASS@HOST/DATABASE?tls=true&retryWrites=true&w=majority&authSource=admin&replicaSet=REPLICASET&appName=APP"
- Run the create_database.py script
python -m src.db_scripts.create_database.py - (Optional): Add test data (Will be prepared for the development team at a later time)
Currently, the database is automatically created on deploy, along with collections. This database will persist, so as long as you have the correct admin permissions, there should not be any direct action needed at this time.
- Create a new Heroku app (If you're part of the Heroku team, the app has already been created for you)
- Go to Deploy. Connect your Heroku account with your GitHub account
- Under Manual Deploy, you can select which branch you want to deploy
- After Heroku finishes building the deployed changes, you will be provided the application URL Everything should be handled by the Procfile, so look there if you need to modify runtime.
- Create a virtual environment and install the uv.lock dependencies
- Make sure the environment variables are set
- You can run the application either through FastAPI directly, or with Gunicorn (Not Windows)
// Running FastAPI directly
fastapi dev ./path/to/main.py
// Running Gunicorn (default)
gunicorn -w 4 -k uvicorn.workers.UvicornWorker src.main:app
- Your application should be hosted through localhost, your shell should return a URL
Please check our contributing guide. As mentioned in the introduction, the project's not looking for new members outside the organization due to the onboarding time, but you can contact us if you're really interested in this project.
TODO