Skip to content

florivdg/dimetime

Repository files navigation

DimeTime

Work in Progress - This project is under active development.

A German-language personal financial planner web application for managing budgets, tracking transactions, and organizing expenses by category.

Overview

DimeTime helps you plan and track your personal finances with:

  • Monthly budget plans - Create financial plans for specific periods
  • Transaction tracking - Record income and expenses with due dates
  • Category management - Organize transactions with color-coded categories
  • Dashboard analytics - Visualize spending patterns and balance overview

Features

  • Dashboard with balance overview, monthly spending charts, and category breakdown
  • Plan management with archiving and search functionality
  • Transaction filtering by category, type, date range, and amount
  • Passkey (WebAuthn) authentication for passwordless login
  • Email/password authentication
  • Data import wizard for bulk transaction import
  • Responsive design for desktop and mobile

Tech Stack

  • Astro 5 - SSR framework with Node adapter
  • Vue 3 - Interactive components with Composition API
  • SQLite - Database with Drizzle ORM
  • Better Auth - Authentication with passkey support
  • Tailwind CSS 4 - Styling with CSS-first syntax
  • Reka UI - Headless component primitives (shadcn-vue style)

Getting Started

Prerequisites

Installation

# Clone the repository
git clone <repository-url>
cd dimetime

# Install dependencies
bun install

# Copy environment template
cp .env.example .env

Environment Variables

Configure the following in .env:

DB_FILE_NAME=sqlite.db
BETTER_AUTH_SECRET=<base64-32-byte-secret>
BETTER_AUTH_URL=http://localhost:4321
PASSKEY_RP_ID=localhost
PASSKEY_ORIGIN=http://localhost:4321

Generate the auth secret:

openssl rand -base64 32

Database Setup

# Run migrations
bun run db:migrate

# Create a user
bun scripts/add-user.ts <email> <password> [name]

Development

# Start dev server at localhost:4321
bun --bun run dev

Commands

Command Description
bun --bun run dev Start development server
bun run build Build for production
bun --bun run preview Preview production build
bun run db:migrate Run database migrations
bun run lint --type-aware Run linter
bun run astro check TypeScript and Astro validation

Releasing

Docker images are automatically built and published to GitHub Container Registry when version tags are pushed.

Release Workflow

  1. Merge all changes to main
  2. Create and push a version tag:
    git checkout main
    git pull origin main
    git tag v1.0.0
    git push origin v1.0.0
  3. GitHub Actions builds multi-platform images (amd64, arm64) and publishes to ghcr.io

Important: Tags must be created on the main branch. Tags on feature or release branches will not trigger a build.

Pulling the Image

docker pull ghcr.io/<owner>/dimetime:latest
# or specific version
docker pull ghcr.io/<owner>/dimetime:1.0.0

Project Structure

src/
├── pages/          # Astro file-based routing
├── components/     # Vue components
│   ├── ui/         # shadcn-vue style components
│   ├── plans/      # Plan management
│   ├── transactions/
│   ├── categories/
│   └── dashboard/
├── db/schema/      # Drizzle schema definitions
├── lib/            # Utilities and auth config
└── middleware.ts   # Route protection
scripts/            # CLI tools (migrations, user management)

About

Personal financial planner

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •