A personal clone of LettuceMeet — a group scheduling tool that helps people find the best time to meet.
LettuceMeet is a web-based group scheduling application where users can:
- Create events with proposed dates and time ranges
- Share a link with participants
- Let participants mark their availability on a visual grid
- Automatically find overlapping available times
picka-meet replicates these core features for personal use. This project is non-commercial and is not affiliated with LettuceMeet.
| Layer | Technology |
|---|---|
| Frontend | Blazor Server |
| UI Framework | MudBlazor |
| Backend | ASP.NET Core |
| ORM | EF Core |
| Database | PostgreSQL |
| DevOps | Podman |
- Podman & Podman Compose (Docker & Docker Compose also supported)
- .NET SDK (optional, for local development without containers)
- PostgreSQL (optional, for local development without containers)
# Clone the repository git clone https://github.com/<your-username>/picka-meet.git cd picka-meet # Create a local environment file cp .env.example .env # Run Blazor Server + PostgreSQL with Podman podman compose up --build -d # Or with Docker # docker compose up --build -d # Access the application # http://localhost:8080
Dockerfilelives at the repository root and buildssrc/PickaMeet.Web/PickaMeet.Web.csproj.compose.ymlalso lives at the repository root and starts:pickameet-webpostgres
- PostgreSQL is only reachable on the internal container network by default.
Copy .env.example to .env and adjust values as needed:
APP_PORT=8080 POSTGRES_DB=pickameet POSTGRES_USER=pickameet POSTGRES_PASSWORD=pickameet_dev_password
The Blazor app receives its connection string from Compose through ConnectionStrings__Default.
If you need a clean PostgreSQL volume:
podman compose down -v
# Or: docker compose down -v- Reuse the same root-level
Dockerfilefor Railway. - Configure Railway to deploy the app service from this repository using the root
Dockerfile. - For production, use Railway-managed PostgreSQL instead of the local
compose.ymldatabase service. - Ensure the deployed app binds to Railway's injected
PORT; the Docker image already supports this at runtime.
This project follows Conventional Commits v1.0.0.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
| Type | Description |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation only changes |
style |
Changes that do not affect the meaning of the code |
refactor |
A code change that neither fixes a bug nor adds a feature |
perf |
A code change that improves performance |
test |
Adding missing tests or correcting existing tests |
build |
Changes that affect the build system or dependencies |
ci |
Changes to CI configuration files and scripts |
chore |
Other changes that don't modify src or test files |
revert |
Reverts a previous commit |
fix: prevent racing of requests
Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.
Remove timeouts which were used to mitigate the racing issue but are
obsolete now.
Reviewed-by: Z
Refs: #123
This project is for personal use only and is not intended for commercial purposes.