- Rust 64.1%
- CSS 17.6%
- HTML 15.9%
- Shell 1.4%
- JavaScript 0.8%
- Other 0.2%
| .forgejo/workflows | ||
| assets | ||
| migrations | ||
| scripts | ||
| src | ||
| templates | ||
| tests/integration | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| rustfmt.toml | ||
Meetogher
A self-hosted, single-group meetup.com alternative. Inspired by Meetable and Mobilizon.
Features
- create, modify, cancel, and delete events
- draft mode before publication
- Markdown support
- Events have an "add to calendar" button that exports either an iCal file or a link to a Google Calendar
- Fully functioning without JavaScript. JS is only used for progressive enhancement
Development
Setup
You will need the following installed:
- Rust and Cargo
- Docker
- PostgreSQL (
psqlcli) sqlx-cliwith Postgres supportjust(optional, but if you don't have it, you need to invoke commands manually (seejustfilefor what commands are available))
Initialize the database
The project includes a script that starts PostgreSQL, creates the application database, and runs migrations:
./scripts/init_db.sh
The script by default uses Docker to start PostgreSQL. If you want to use an existing PostgreSQL database, you can skip Docker:
SKIP_DOCKER=true ./scripts/init_db.sh
By default, the script set up the database with the following variables. All of which can be overridden with environment variables:
DB_HOSTNAME(defaultlocalhost)DB_PORT(default5432)SUPERUSER(Postgres super user, defaultpostgres)SUPERUSER_PWD(defaultpassword)APP_USER(Postgres app user, defaultapp)APP_USER_PWD(defaultsecret)APP_DB_NAME(defaultmeetogether)
Populate Seed Data
It can be useful to populate the database with some seed data for testing purposes. You can do it via the folloinwng command (change the postgres URL to match the setup above):
psql postgres://app:secret@localhost:5432/meetogether < scripts/db/populate_dev_data.sql
Hot Reloading
To support hot reloading, we need to install cargo-watch and systemfd:
cargo install cargo-watch systemfd
You can run the server hot reloading with the following command:
just dev
Test
To run tests, we need to set the DATABASE_URL environment variable (which is used by integration tests to create test
databases):
DATABASE_URL=postgres://app:secret@localhost:5432/meetogether cargo test
Code Coverage
just coverage
Tech Stack
See Cargo.toml for the list of all dependencies. Belows are some key libraries and tools used in this project.