Skip to content

kurze/groups

Repository files navigation

Groups

A Rust web application for group management - a toy project to learn Rust with goals to create a Meetup equivalent. The application uses Actix-web as the HTTP server with PostgreSQL as the database and Tera templating for HTML rendering.

Tech Stack

  • Actix Web - Web framework for Rust
  • PostgreSQL - Database with Docker support
  • SQLx - Async PostgreSQL driver with compile-time checked queries
  • Tera - Template engine (Jinja2-like)
  • Argon2 - Password hashing library
  • htmz - Minimalist HTML microframework (166 bytes)
  • Task - Task runner/build tool

Development

To install Task (not mandatory), please refer to the installation guide.

Quick Start

  1. Copy environment configuration:
cp .env.example .env
  1. Start PostgreSQL database:
task db-up
  1. Run the application:
task dev

The application will be available at http://127.0.0.1:8080

Development Commands

# Build the project
task build

# Build for production
task build-release

# Run the service locally
task run

# Format code
task fmt

# Run tests
task test

# Run pre-commit checks (format and test)
task pre-commit

Docker Support

# Start full stack (database + application)
task docker-up

# View logs
task docker-logs

# Stop the stack
task docker-down

Project Structure

  • src/api/ - REST endpoints and HTML handlers
  • src/db/ - Database layer with business logic and models
  • src/middleware/ - Authentication middleware
  • src/templates/ - Tera HTML templates
  • src/static/ - CSS, JS assets
  • migrations/ - PostgreSQL schema migrations
  • tests/ - Rust integration tests and Playwright E2E tests

About

Toy project to learn Rust The goal is to make a Meetup equivalent for our own group at first and then may be open up more broadly

Resources

License

Stars

Watchers

Forks

Contributors