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.ymlif 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.txtor using Poetry:poetry install. -
Set the
MAIN_DB_URIenvironment 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 headto create the initial tables in the configured database. - Optionally set
FORMS_DB_URIandMAIL_DB_URIif 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.
















