6 Commits

Author SHA1 Message Date
ad6f2b2ff2 refactor(model): rename Postcard.country -> country_to for clear semantics - country_from: origin country (where postcard was sent from) - country_to: destination country (where postcard was sent to) - Profile.country remains as user's home country - Updated all routes, schemas, templates, and API endpoints 2026-07-07 13:43:39 +08:00
a071b3dde4 feat(postcard): profile country, country_from, per-user card number uniqueness, public page overhaul - Profile: add country field for default origin country - Postcard: add country_from field, auto-fill from profile.country on create - card_number uniqueness: change from global to per-user (profile_id + card_number) - Public pages: remove card_number display, only show cards with image_front - Public pages: show country as from→to format - Index page: no time display, add register button, fix lightbox with prev/next - Infinite scroll: add /api/public/cards endpoints and IntersectionObserver - Internal pages: update postcards list/detail for country_from display - i18n: add profiles.country_ph, pc_form.country_from, pc_detail.route 2026-07-07 12:32:24 +08:00
137304090a chore: stage changes before history rewrite 2026-07-07 11:28:18 +08:00
6a49fedfbb feat(api): add public RESTful API with API key auth and documentation page 2026-07-07 09:22:11 +08:00
ae2ed2d961 feat: add user settings page (change username/password) and remove public registration 2026-07-05 22:01:24 +08:00
0eca60300f feat: initial postcard manager - FastAPI + Jinja2 + SQLite 2026-07-05 16:06:03 +08:00