All-in-one toolkit for generating forms, mailing lists and certificatesβideal for clubs and small organizations.
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
.
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.
- 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.
- 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
-
Install Python packages with
pip install -r requirements.txt
or using Poetry:poetry install
. -
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"
- Run
alembic upgrade head
to create the initial tables in the configured database. - Optionally set
FORMS_DB_URI
andMAIL_DB_URI
if using separate databases for forms and mail. - Start the app with
flask --app src.app run
.
Tested on Python 3.11 with MariaDB 10.7
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 |
---|---|---|
Browse, insert, update and delete records across all databases through a simple interface.
Database Manager | Modify Tuples | If Error Occurs |
---|---|---|
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 |
---|---|
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 |
---|---|---|
View submissions for any generated form and download them as CSV.
View Form Responses |
---|
Create short URLs using the short.io
API with either custom or auto-generated slugs.
Link Shortener with short.io API |
---|
Toggle between light and dark themes to save your eyes at night.
Dark Mode Preview |
---|
If you encounter any issues, please open a ticket using the appropriate template.
Krishnakanth Alagiri π¨βπ» | Mahalakshumi V π©βπ» | Dhiraj V |
---|---|---|
@bearlike | @mahavisvanathan | @dhirajv2000 |
Hat tip to everyone whose code was used.