Skip to content

Repository files navigation

CASync logo

CASync

A platform for connecting timetables

A project by - UWA Agile Web 2026's 12:40pm Thursday Lab Group

Name ID Git User
Sze Ying Lin 24214052 Stoveup
Kelly Valencia 24540356 Kelly-Vl
Liam Cervenka 24083063 LVaclav
Tehei Cabanis 24467332 Tehei01

CASync aims to connect students and their schedules. Users create an account, add their CAS (Class Allocation System) iCal link and connect with friends, join groups or create them. The primary feature is a comparative schedule to show availability amongst multiple students.

Tech Stack:

  • Python / Flask
  • SQLite (via Flask-SQLAlchemy)
  • JavaScript / JQuery
  • CSS / Tailwind
  • HTML / Jinja2 templates

Use the planning dir for plans

Getting started

  1. Clone the project

    git clone git@github.com:CASync-dev/CASync.git
    cd AgileWeb2026
  2. Set up the Python environment

    python -m venv .venv
    source .venv/bin/activate      # For Your Filthy Windows: .venv\Scripts\activate
    pip install -r requirements.txt
  3. Install frontend dependencies (Tailwind CSS)

    npm install
  4. Run any database migrations

    flask db upgrade # for going up a version
    flask db downgrade # for going down a version (regressing changes)

    This creates the db and applies any changes.

  5. Run the seeding script

    python seed.py

    This 'seeds' your database with a bunch of fake data and users to use in dev. Should only really need to run once. Optionily you can add the flag 'seed:events' to add a number of fake events based on one ical file. Otherwise use the settings display to import an ical.

  6. Start the app

    In one terminal, watch for Tailwind CSS changes:

    npm run watch:css

    In another terminal, run the Flask dev server:

    python app.py

    Alternatively, you can run:

    npm run dev

    To run them both in one terminal. The dev variant also runs the command browser-sync that live reloads your browser on changes to make visual changes instant.

    The app will be available at http://localhost:8080 {or http://localhost:3000 with browser-sync}.

Running Tests

Tests live in the tests/ directory and use Python's built-in unittest. From the project root:

  • Run everything:

    python -m unittest
  • Run just the unit tests or just the Selenium system tests:

    python -m unittest tests.unittests
    python -m unittest tests.systemtests

    (Each package's __init__.py re-exports its test modules so these commands pick them all up — remember to add new test files there.)

  • You can also target a specific test:

    python -m unittest tests.unittests.test_app
    python -m unittest tests.systemtests.test_private

The system tests use Selenium with Firefox and run headless by default. Set HEADLESS=0 in your .env to watch the browser, e.g. HEADLESS=0 python -m unittest.

Docs

Notice: Docs are currently outdated at the moment. Will be updated in a future PR.

Go to the /docs directory for explantions for how the app works.

Plans And Structure

Pages

  • Homepage
    • Navigation menu
    • Logo
    • Sign up/log in
  • Register
    • Enter account information (university email, password)
    • Enter iCal link
  • Login
  • Dashboard
    • Shows a snapshot of either the user's timetable or main friend group timetable
  • Settings
    • Update iCal profile
  • Groups
    • Create group
    • Join group
    • Add person to group
  • Friends
    • Add friend
    • Send friend request
  • Help Page / Support

User Stories

# User Stories
1 As a student, I want to see when my friends are free so we can schedule hangouts.
2 As a student, I want to share my class schedule with my friends so they know when I am in class.
3 As a student, I want to see my friends' class schedule so I can see when they are in class.
4 As a student, I want to let my friends know whether I will be attending certain classes or not so they know when to expect me.
5 As a student, I want to create groups and add people to the group so we can coordinate with multiple people.
6 As a student, I want to give roles within groups.
7 As a student, I want to schedule group study sessions or meetings .
8 As a student, I want to add friends or send friend requests.
9 As a student, I want to accept friend requests.
10 As a university club, I want to create events and see the availabilities of my committee so we can schedule event meetings.

About

Timetable / Schedule sharing platform for students

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages