Susun Jadwal is an open source tool to plan class schedules for university students, developed by Ristek Fasilkom UI. https://susunjadwal.cs.ui.ac.id/
In the spirit of Open Source Software, everyone is welcome to contribute to Susun Jadwal! See the Contributing Guide below for more.
app/ // general views
models/ // mongoDB models
scraper/ // courses (academic.ui.ac.id) scraper
sso/ // SSO UI authentication logic
requirements.txt // python dependency list
scripts/ // (utility scripts)
├── init-mongo.sh // script to create non-root mongoDB user
├── launch.sh // main script to start flask
├── mongo_dump.sh // script to dump mongoDB data to .dump file
└── start.sh // alternative script to start flask
.env.example // template for .env file
dev.docker-compose.yml // docker-compose for mongo and rmq
docker-compose.yml // docker-compose for mongo, rmq, & server
Everyone is welcome to contribute to Susun Jadwal! Feel free to make a contribution by submitting a pull request. You can also report bugs and request features / changes by creating a new Issue.
For in-depth discussion, please join RistekOSS's Discord.
python(tested on 3.6 and 3.9.18), andpipdocker
The following steps will assume you have already set up a python virtual environment,
and will use dev.docker-compose.yml.
-
Boot up MongoDB and RabbitMQ:
docker-compose -f dev.docker-compose.yaml up -
Populate
.env, using.env.exampleas reference. -
Connect to MongoDB and create a non-root user.
mongosh -u <root-username> // enter password when prompted use <db_name>; db.createUser({user: "<MONGODB_USERNAME>", pwd: "<MONGODB_PASSWORD>", roles: ["readWrite"]}); // response should be '{ok: 1}', use these credentials in your .env secrets -
Boot up the Flask server:
export PORT=8000 && bash scripts/launch.sh -
Ping the API:
http://localhost:8000/susunjadwal/api/
-
Populate
.env. -
Run
docker-compose.yml.
While RISTEK uses a different standardized workflow, here is a general guide on deploying.
-
Populate
.env. -
Replace line 23-25 in
docker-compose.ymlto pull from Docker Hub:
image: ristekoss/susunjadwal-backend:stable
-
Modify the credentials in
MONGO_INITDB_XXenvironment variables. -
docker compose up
- Run the dump script:
bash mongo_dump.sh - The result will be a
.dumpfile in the directory./mongodump.
- Copy dump file to MongoDB Container:
docker cp <path_to_dump_file> susunjadwalbackend_mongo_1:/<path_to_dump_file> - Load dump into DB:
docker exec -it <mongo_container_name> mongorestore -u <root_username> --archive=<file.dump> - Enter
<root_username>'s password when prompted. - You should see the success message:
XX documents successfully restored.
We use a standardized pipeline for all our products which we invoke from .github/workflows/deploy-<env>.yaml
To see the version of susunjadwal-backend which was maintained and deployed up until 2023, see 5b8f710.
See LICENSE.md. This software actually goes a long way back, thank you so much to everyone involved.