WIP meetup.com replacement. In very early stage
  • Rust 64.1%
  • CSS 17.6%
  • HTML 15.9%
  • Shell 1.4%
  • JavaScript 0.8%
  • Other 0.2%
Find a file
Lesley Lai 63cdbb990e
All checks were successful
/ test (push) Successful in 1m16s
/ lint (push) Successful in 1m51s
Flash message WIP
2026-04-29 21:35:48 +10:00
.forgejo/workflows Split linting to a separate CI task 2026-03-29 00:25:05 +11:00
assets Flash message WIP 2026-04-29 21:35:48 +10:00
migrations Meeting URL link 2026-04-08 20:53:12 +12:00
scripts Meeting URL link 2026-04-08 20:53:12 +12:00
src Flash message WIP 2026-04-29 21:35:48 +10:00
templates Flash message WIP 2026-04-29 21:35:48 +10:00
tests/integration RSS feed 2026-04-23 21:58:51 +10:00
.gitignore Meeting URL link 2026-04-08 20:53:12 +12:00
Cargo.lock Flash message WIP 2026-04-29 21:35:48 +10:00
Cargo.toml Flash message WIP 2026-04-29 21:35:48 +10:00
justfile Store civil time (datetime without timezone) for events 2026-03-29 20:19:12 +11:00
LICENSE Add license 2026-02-12 17:59:47 +08:00
README.md Event edit 2026-04-19 14:29:58 +10:00
rustfmt.toml Store civil time (datetime without timezone) for events 2026-03-29 20:19:12 +11:00

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 (psql cli)
  • sqlx-cli with Postgres support
  • just (optional, but if you don't have it, you need to invoke commands manually (see justfile for 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 (default localhost)
  • DB_PORT (default 5432)
  • SUPERUSER (Postgres super user, default postgres)
  • SUPERUSER_PWD (default password)
  • APP_USER (Postgres app user, default app)
  • APP_USER_PWD (default secret)
  • APP_DB_NAME (default meetogether)

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.

  • Rust - Programming Language
  • PostgreSQL - Database
  • Rust Libraries
    • Axum - HTTP routing and request-handling library
    • Askama - template rendering engine
    • Jiff - datetime library
    • sqlx - database abstraction layer