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.
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
Place-oriented workflows
- Latitude and longitude storage
- Address geocoding and map links
- Google Plus Code support
- What3Words integration
Reliable edit flows
- Create, update, and delete records safely
- Validation with preserved form data on errors
- Secure server-side request handling
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 beforeData 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