Commit Graph

5 Commits

Author SHA1 Message Date
TenerifeProp Dev
0d290f29a1 feat: implement administrative section with authentication
## Features Implemented

### Authentication System
- Login page at /login.html with Bootstrap 5 UI
- Session-based authentication using SQLite
- bcrypt password hashing via Bun.password API
- CSRF protection for form submissions
- Rate limiting on login attempts (10 req/min)
- 7-day session persistence with HTTP-only cookies

### Admin Routes Protection
- All admin endpoints protected with requireAuth middleware
- requireAdmin middleware for role-based access
- Session validation on each authenticated request
- Expired session cleanup on startup

### API Endpoints
- POST /api/auth/login - user authentication
- POST /api/auth/logout - session termination
- GET /api/auth/me - current user info
- GET /api/csrf-token - CSRF token for forms
- GET /api/admin/stats - admin statistics

### Seed Data
- 12 realistic properties in Tenerife
- 3 testimonials with international clients
- 3 FAQ items about buying process
- 3 services offered
- Admin user: admin@tenerifeprop.com / admin123

### Tests
- Authentication tests (password, session)
- Input validation tests (email, phone, XSS)
- Property CRUD tests

## Files Changed
- src/server/index.ts - CSRF fix, auth endpoints
- public/login.html - New login page
- public/js/api.js - Auth API methods
- public/admin.html - Auth check on load
- src/db/seed-comprehensive.ts - Seed script
- tests/auth.test.ts - Test suite

## Tested
 Login page renders correctly
 Valid credentials return success
 Invalid credentials return error
 Session cookie is set
 Protected endpoints require authentication
 Logout clears session
 Auth/me returns 401 after logout

## Access
- URL: http://localhost:3000/login.html
- Email: admin@tenerifeprop.com
- Password: admin123

Closes #28, #29, #30
2026-04-06 00:44:38 +01:00
TenerifeProp Dev
462ab16488 wip: progress updates - CSS extraction done, rate limiting started
- CSS extraction completed (Issue #5) 
- Docker compose updated with mounted volumes for development
- Rate limiting middleware started (Issue #6) - tests failing
- Database recreated with proper schema

Note: Rate limiting test needs fix - router already built error
2026-04-05 12:24:18 +01:00
TenerifeProp Dev
d0e3a87eac refactor: extract CSS into separate files (issue #5)\n\n- Create public/css/base.css with reset and typography\n- Create public/css/components.css with shared UI components\n- Create public/css/pages/home.css for homepage styles\n- Create public/css/pages/property.css for property page styles\n- Create public/css/pages/admin.css for admin panel styles\n- Add CSS variables for badges and text colors\n- Remove inline styles from HTML files\n- Add link tags to HTML files\n- Add CSS extraction tests\n\nCloses #5 2026-04-05 05:46:05 +01:00
TenerifeProp Dev
f4b82c8502 feat: add persistent sessions, sitemap docs, and expanded seed data
## Security
- Sessions now stored in SQLite database instead of memory
- Sessions table persists across server restarts
- Auto-cleanup of expired sessions on startup

## Documentation
- Created docs/SITEMAP.md with site navigation map
- Documented user flows and data binding
- Listed all routes and their purposes

## Issue #9 Progress
- Seed data expanded from 3 to 12 properties
- Added English translations (title_en, description_en)
- All major Tenerife cities represented
- Various property types: urban, agricultural, houses, apartments

## Database
- Added title_en, description_en, short_description_en columns
- Deleted old database to reseed with new data
2026-04-05 00:15:48 +01:00
TenerifeProp Dev
c1867fe074 feat: implement complete backend with Bun + Hono + SQLite
- Create SQLite database schema with all tables
- Implement REST API endpoints for properties, leads, testimonials, FAQ, services
- Add seed data with sample properties, testimonials, FAQ
- Create Docker configuration for deployment
- Add i18n system for translations
- Add API client for frontend integration
- Create Technical Documentation (TZ.md)
- Add detailed README with deployment instructions

🚀 Project is now fully functional:
- API: http://localhost:8080/api/*
- Properties CRUD with filtering
- Lead management
- Settings, Testimonials, FAQ, Services APIs
- SQLite database with seed data
2026-04-04 22:16:06 +01:00