Skip to content

πŸš€ Streamline club management with our all-in-one system: bulk mailer, certificate generator & more. Perfect for student organizations.

License

Notifications You must be signed in to change notification settings

bearlike/REMS-For-Organisations

Repository files navigation

REMS - Resources and Event Management System

CMS For Organisations

All-in-one toolkit for generating forms, mailing lists and certificatesβ€”ideal for clubs and small organizations.

Last Commit License Docker Container Open Issues Latest Release

Note

Prior to version 1.1.5, this project was developed in PHP and has since been fully migrated to Python. The Python codebase begins with v2.0.0. No database migrations are required when upgrading from v1.x to v2.0.0.

πŸ“ Overview

REMS began as a fun PHP project in college and has since been completely migrated to Python with Flask. It automates certificate generation, form creation, bulk mailing and more. Over 1500 participants across 20+ events have used it, and you can easily adapt it for your own organization.

πŸš€ Getting Started

πŸ“¦ Prerequisites

  • Python 3.11 or newer
  • A SQL database server (tested with MariaDB 10.7)
  • Clone this repository.

Warning

A default user with the username admin and password admin will be created during initialization. Please change these credentials after project setup and deploying to production.

🐳 Deploy with Docker (Recommended)

  • Install Docker and Docker Compose.
  • Adjust credentials in docker-compose.yml if needed.
  • Launch with:
# The docker-compose.yml now builds the image locally and will
# automatically apply Alembic migrations on startup
docker-compose up -d

πŸ› οΈ Manual Installation

  1. Install Python packages with pip install -r requirements.txt or using Poetry: poetry install.

  2. Set the MAIN_DB_URI environment variable to your database connection. This can point to MySQL, PostgreSQL or SQLite, for example:

    # Local SQLite database for development
    export MAIN_DB_URI="sqlite:///absolute/path/to/rems.db"
    # or MySQL database
    export MAIN_DB_URI="mysql+pymysql://user:pass@localhost/rems"
    # or PostgreSQL database
    export MAIN_DB_URI="postgresql+psycopg2://user:pass@localhost/rems"
Windows (PowerShell) users: Setting environment variable
$env:MAIN_DB_URI="sqlite:///absolute/path/to/rems.db"
# or
$env:MAIN_DB_URI="mysql+pymysql://user:pass@localhost/rems"
# or
$env:MAIN_DB_URI="postgresql+psycopg2://user:pass@localhost/rems"

  1. Run alembic upgrade head to create the initial tables in the configured database.
  2. Optionally set FORMS_DB_URI and MAIL_DB_URI if using separate databases for forms and mail.
  3. Start the app with flask --app src.app run.

✨ Features and Screenshots

Tested on Python 3.11 with MariaDB 10.7

πŸ† Certificate Generation and Distribution System (CGDS)

Automatically generate certificates from a template and a CSV file. The certificates are then available for download.

CDS Public (Collection) CDS Admin (Generation) Generated Certificates
CDS Public (Collection) CDS Admin (Generation) Generated Certificates

πŸ—„οΈ Database Management

Browse, insert, update and delete records across all databases through a simple interface.

Database Manager Modify Tuples If Error Occurs
Database Manager Modify Tuples If Error Occurs

πŸ“ Form Generation

Create event registration forms with built-in validation and Markdown support. A table is automatically created in forms-db to store responses.

Form Generator Sample Generated Form
Form Generator Sample Generated Form

πŸ“§ Bulk Mailer

Send HTML emails to a mailing list using a customizable template. Upload a CSV of recipients to build your list.

Bulk Mailer Interface Mailing List Generator Sample Sent Mail
Bulk Mailer Interface Mailing List Generator Sample Sent Mail

πŸ“Š View Responses

View submissions for any generated form and download them as CSV.

View Form Responses
View Form Responses

πŸ”— Link Shortener

Create short URLs using the short.io API with either custom or auto-generated slugs.

Link Shortener with short.io API
Link Shortener with short.io API

πŸŒ™ Dark Mode πŸŒ™

Toggle between light and dark themes to save your eyes at night.

Dark Mode Preview
Dark Mode Preview

❓ Need Help?

If you encounter any issues, please open a ticket using the appropriate template.

πŸ‘₯ Contributors

Krishnakanth Alagiri πŸ‘¨β€πŸ’» Mahalakshumi V πŸ‘©β€πŸ’» Dhiraj V
f f f
@bearlike @mahavisvanathan @dhirajv2000

πŸ™ Acknowledgments

Hat tip to everyone whose code was used.

wave