Skip to content

andp97/milestone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

46 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MileStone β€” Hit every milestone.

MileStone πŸ₯Œ

Hit every milestone.

License: MIT SvelteKit + Svelte 5 PostgreSQL + Prisma Tailwind CSS v4

A self-hosted project management tool. Track tasks, milestones, and time across projects β€” with a public shareable board and real-time updates.

Features

  • Kanban & list views β€” drag-and-drop task ordering with fractional indexing
  • Milestones β€” group tasks with progress tracking and target dates
  • Time tracking β€” start/stop timer, manual entries, time-in-status reporting
  • Comments β€” threaded markdown comments with emoji reactions
  • Public boards β€” shareable read-only project view, no login required
  • Invitations β€” email-based project invites for new and existing users
  • Real-time β€” SSE-powered live updates across browser tabs
  • Keyboard shortcuts β€” T new task, N new project, Cmd+K command palette

Tech stack

  • SvelteKit + Svelte 5 (runes) + TypeScript
  • PostgreSQL + Prisma ORM
  • Tailwind CSS v4
  • Docker (multi-stage build, adapter-node)

Local development

Prerequisites

  • Node.js 22+
  • pnpm (npm i -g pnpm)
  • Docker + Docker Compose

1. Start backing services

docker compose -f docker-compose.yml up db mailpit -d

This starts PostgreSQL on port 5432 and Mailpit (SMTP on 1025, web UI on 8025).

2. Configure environment

cp .env.example .env

The defaults in .env.example match the Docker services above β€” no edits needed for local dev.

3. Install and migrate

pnpm install
pnpm db:migrate   # runs prisma migrate dev
pnpm db:seed      # optional: seed demo data

4. Run the dev server

pnpm dev

App is at http://localhost:5173. Outgoing emails are caught by Mailpit at http://localhost:8025.


Running with Docker Compose (all-in-one)

docker compose -f docker-compose.yml up --build

App runs at http://localhost:3000. Migrations are applied automatically on container start.


Production deployment

Copy .env.prod.example to .env.prod and fill in your values, then:

docker compose -f docker-compose.prod.yml up -d

Key environment variables:

Variable Description
DATABASE_URL PostgreSQL connection string
SESSION_SECRET Random string, at least 32 characters
BASE_URL Public URL of your instance (used in email links)
SMTP_HOST/PORT/USER/PASS/FROM Outbound email config

Commands

pnpm dev              # Dev server
pnpm build            # Production build
pnpm check            # Svelte type check
pnpm db:migrate       # Create and apply a Prisma migration
pnpm db:generate      # Regenerate Prisma client after schema changes
pnpm db:seed          # Seed database
pnpm test:e2e         # Run Playwright e2e tests

CI

GitHub Actions runs on every push and PR to main:

  • typecheck β€” svelte-check
  • e2e β€” Playwright against a Postgres service container
  • docker-build β€” validates the Dockerfile builds cleanly

Dependabot keeps npm packages, Docker base images, and Action versions up to date (weekly, Monday).


License

MIT Β© 2026 Andrea Pavone

About

MileStone πŸ₯Œ β€” A simple project management tool, with a public boards, milestones and time tracking.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors