Commit Graph

7 Commits

Author SHA1 Message Date
TenerifeProp Dev
e6ea1400d6 feat: implement administrative section with authentication and seed data
## Features Added

### Admin Login Page (public/login.html)
- Professional login UI with Bootstrap 5
- Email/password authentication
- CSRF protection
- Rate limiting protection
- Session persistence (7 days)
- Remember me functionality
- Language: Spanish with translations ready

### Authentication Middleware (src/server/index.ts)
- Session-based authentication using SQLite
- bcrypt password hashing
- CSRF token endpoint for form protection
- Auth check on admin.html page load
- Logout endpoint

### API Client Enhancements (public/js/api.js)
- Added auth methods: login(), logout(), getMe(), getCsrfToken()
- CRUD methods for all admin entities:
  - Properties: create, update, delete
  - Leads: get, update, delete
  - Testimonials: create, update, delete
  - FAQ: create, update, delete
  - Services: create, update, delete
  - Settings: get, update
- Admin stats endpoint

### Comprehensive Seed Data (src/db/seed-comprehensive.ts)
- 36 properties of all types:
  - 8 urban lands
  - 10 agricultural plots
  - 8 houses/villas
  - 10 apartments
- Real Tenerife locations with coordinates
- Spanish and Russian translations
- 8 testimonials from international clients
- 8 FAQ items (buying process, taxes, etc.)
- 6 services offered
- Admin user: admin@tenerifeprop.com / admin123
- Stock photos from Unsplash

### Tests (tests/auth.test.ts)
- Authentication tests
- Session management tests
- Property CRUD tests
- Input validation tests
- XSS prevention tests
- Email/phone validation tests

## Why These Changes

1. Security: Authentication protects admin routes from unauthorized access
2. Data: Seed data provides realistic content for testing and demo
3. UX: Professional login page improves user experience
4. Testing: Tests ensure reliability and catch regressions

## Breaking Changes
None - all changes are additive

## Related Issues
- Closes #28 (Admin Login Page)
- Closes #29 (Seed Data Generation)
- Closes #30 (Tests Implementation)

## Milestone
Administrative Section Implementation (#51)
2026-04-06 00:21:34 +01:00
TenerifeProp Dev
52397c7008 fix: remove duplicate script tags causing infinite redirect
The HTML files had malformed footer with duplicate script tags:
- </html> followed by empty <script></script> and navigation.js
- navigation.js exports switchLanguage with location.reload()
- This overwrites the inline switchLanguage function
- On page load, switchLanguage() → location.reload() → infinite loop

Removed duplicate footer from all HTML files.
2026-04-05 20:51:11 +01:00
TenerifeProp Dev
5a599e24c6 fix: restore original inline CSS styles in HTML files
- Restored full inline styles (~3100 lines CSS) that were lost during CSS extraction
- Removed malformed outer HTML wrapper
- Cleaned up indentation and formatting
- All styles now embedded directly in HTML for proper rendering
- Button styles, navbar, hero section, all components restored
2026-04-05 18:32:47 +01:00
TenerifeProp Dev
77e3c9c629 fix: static files for SPA routes with absolute paths and redirects
- Fixed MIME type errors for CSS/JS in property/admin pages by adding redirect routes
- Updated HTML files to use absolute paths (/css/, /js/) instead of relative (css/, js/)
- Added redirect handlers for SPA static files to main static folders
- Preserved SPA functionality while fixing styling issues
2026-04-05 18:14:18 +01:00
TenerifeProp Dev
3f183b2f7e fix: remove malformed outer HTML wrapper from all pages
Removed duplicate DOCTYPE/html/body structure that was wrapping the actual content.
2026-04-05 12:35:39 +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
d7a04e8114 feat: initial project structure for TenerifeProp real estate agency
- Set up project architecture with TypeScript types
- Create property, user, lead, and content type definitions
- Add i18n translations (ES, RU)
- Add sample JSON data for properties and leads
- Create comprehensive architecture documentation
- Set up package.json with Bun + Hono stack
2026-04-04 21:58:55 +01:00