Project Overview SvelteKit Migration

About This Project

This is a modern SvelteKit migration of the py4web Place Management System, built for storing, searching, and managing memos and places with fast query tooling, reliable forms, and a cleaner interface.

Architecture

The app keeps the existing PostgreSQL data model but moves the UI and request flow to SvelteKit with typed server routes and reactive client pages.

Modern Stack

  • Frontend: SvelteKit 2 with Svelte 5 runes
  • Styling: Tailwind CSS 4 with app theme tokens
  • Backend: SvelteKit server routes in TypeScript
  • Database: PostgreSQL shared with py4web
  • Authentication: JWT-based sessions compatible with the legacy app

Status

Active development

The codebase is still being refined, but the migration already preserves database compatibility while improving responsiveness, typing, and maintenance.

Technical Details

Framework
SvelteKit 2.x with Svelte 5
Runtime
Bun
Database
PostgreSQL with `pg`
Development Server
Vite with HMR

Core Features

The main capabilities are grouped into a few practical areas.

Advanced Search

Structured query parsing

  • Field-specific searches and mixed criteria
  • Boolean logic with `OR` groups
  • Date filters, including relative offsets
  • Fast query execution for day-to-day use
Geographic Data

Place-oriented workflows

  • Latitude and longitude storage
  • Address geocoding and map links
  • Google Plus Code support
  • What3Words integration
CRUD Operations

Reliable edit flows

  • Create, update, and delete records safely
  • Validation with preserved form data on errors
  • Secure server-side request handling
Modern UI

Responsive screens

  • Mobile-friendly layouts
  • Clear card-based sections
  • Better loading and feedback states

Search Examples

Place Searches

# Find specific airports
p:(MXP || VCE || MUC)

# Search by location
country:Italy address:Milano

# Mixed criteria
type:airport country:(Italy || Germany)

Date Searches

# Exact date
d:2025-10-17

# Date components
yy:>2022 mm:9 dd:30

# Relative dates
d:2025-10-17 years:-1        # 1 year ago
d:2025-10-17 months:+3       # 3 months ahead
d:2025-10-17 days:-10        # 10 days before

Data Models

Memo

Main memo entries with date, title, body, people, vehicle, and weight tracking.

Place

Geographic places with coordinates, addresses, contact info, and ratings.

Memo-Place Junction

Links memos to places with actions such as stay, check-in, check-out, and visit.

Key Improvements

  • Modern TypeScript codebase with stronger type safety
  • Improved performance through optimized queries
  • Reactive UI updates and better perceived responsiveness
  • Cleaner separation between UI, routes, and data access
  • Shared database compatibility during migration

Recent Updates

October 2025 · SvelteKit Migration

  • Complete migration from py4web to SvelteKit
  • Tailwind-based UI refresh
  • JWT authentication rollout

October 2025 · Memo Place & Navigation

  • Auto check-out for hotel stays
  • Smarter date navigation
  • Better search detection

December 2025 · Relative Date Filters

  • Relative dates from a base day
  • Years, months, weeks, and days support
  • Cumulative filter composition