Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rowing Club Management Service

This is a personal project where the primary goal is to learn a new set of technologies and improve my working knowledge of what I know, that being:

  • Python (3.14.2)
  • SQLAlchemy (Python SQL toolkit and Object Relational Mapper)
  • Alembic (Database migration tool)
  • PostgreSQL (SQL database)
  • Redis (In-memory database)
  • Docker Containerized applications
  • ... and many more libraries to provide greater functionality and security

This project is inspired by my experience at my University's rowing club (Hence a service dedicated to rowing) and my observation of their needs.

As it stands, it is a standalone service, lacking a front end wrapper to use this. I will most likely work on one once this is completed using React.

TODO

Planning

  1. Calendar
    • Attendance
      • tracking absences only
      • assumed present if not absent
    • Availability
      • Monitors anticipated availability of all members (for the week)
      • unsure how to go about storing this one
    • Practice schedules
      • Dates
        • contains info on what will be done on practice (Land vs Water and Intensity)
        • Varies on day-by-day basis
  2. Volunteering (Maybe merge with calendar or keep standalone)
    • Headcount for anticipated members
    • Track who has/n't volunteered
  3. Feedback
    • Session (Create a feedback opportunity each session)
      • Coxwains
        • general thoughts on overall performance up to this point in the semester
      • Boats
        • Opinions of the coxwain and rowers on a specific boat in relations to performance and constructive criticism
    • General (random feedback, undated and not required)
      • Rowers

Data

  • Membership
    • **Possibly in the distant future** Implement stripe payment for dues payment

Data Processing

  1. Boats
    • min, max, avg pace
    • distance travelled
    • rowers & coxwains on boat
      • Rower contribution score (RCS)
        • FURTHER RESEARCH REQUIRED. find mathematical representation to estimate combined effort to speed
        • Avg out performance of boats rower was in
      • Boat power & expected boat power based off RCS
  2. Workouts
    • Ergs
      • Varies as not everyone does the same workouts
    • Water
      • Varies as not everyone does the same workouts
    • Mile Runs
    • Black & Gold
      • Submissions for different teams
        • Teams are Gold & Black, teams are same for the school year (fall-spr)
    • Notes:
      • Allow partial submissions (Sometimes members can't finish for some reason)
      • Will have users manually inputting their performance
      • Some are repeated, making it easy to track performance over time
      • Are done in sequential order
      • may track wattage, pace and/or distance of member

GOALS

Completed

  • Build a simple web server
  • API paths
  • Request Bodies
  • Organize API Paths with Routers
  • Databases With SQLModel
  • Creating a database model with SQLModel
  • Creating database tables
  • CRUD With SQLModel
  • Separate CRUD logic using service classes
  • Use service methods in API path handlers
  • Create the user auth model
  • Database Migrations With Alembic
  • User Account Creation
  • Password hashing with bcrypt
  • JWT Authentication
  • PyJWT Setup
  • User Login Endpoint
  • Add roles to the user model
  • HTTP Bearer Authentication
  • Regaining Access with refresh tokens
  • Revoking Tokens using Redis

WIP

  • Read and set headers
  • Role-Based Access Control
  • Get the currently authenticated user
  • Error Handling
  • Create custom API Exceptions and exception handlers
  • Register Error handlers on the app
  • Create a custom logging middleware
  • Use Custom ASGI middleware with FastAPI
  • Adding CORS Middleware
  • Adding Trusted Hosts
  • Setting Up FastAPI-Mail
  • User account verification
  • Password Reset
  • Background Tasks
  • FastAPI Background Tasks
  • Background Tasks with Celery and Redis
  • Celery Monitoring With Flower
  • API Testing
  • Unit-tests with Unittest Mock and Pytest
  • Document-driven Testing with Schemathesis

A big thanks to Mr. Ssali Jonathan's guidance, providing great inspiration, and making this possible in the first place.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages