Théophile Gervreau-Mercier
7fca85d1c1
refactor: rename database → storage
...
More semantically accurate: contains SQLite files, schema, fixtures, test data.
Updated all references in code, scripts, docs.
2026-02-12 12:12:58 +01:00
Théophile Gervreau-Mercier
0e4921583e
refactor: reorganize to standard PHP structure
...
- Moved /lib → /src (PHP source code)
- Moved /includes → /public/includes (main site templates)
- Admin section remains self-contained in /public/admin with its own /inc
- Updated all require/include paths across codebase
- Updated config/bootstrap.php, justfile, tests, docs
- All tests passing ✅
Structure now follows PHP best practices:
/config - Configuration files
/database - SQLite database + schema
/docs - Documentation (intact)
/nginx - Server config (intact)
/public - Web-accessible files (entry point)
/admin - Self-contained admin interface
/assets - CSS, fonts, icons
/includes - Main site templates (header/footer)
/scripts - Deployment scripts (intact)
/src - PHP source classes (Database, AdminAuth, RateLimit)
/tests - Test suites
2026-02-12 12:11:16 +01:00
Théophile Gervreau-Mercier
87f0838b5d
dev: add live-reload development server
2026-02-08 11:58:35 +01:00
Théophile Gervreau-Mercier
4bbbc58e24
Fix admin CSS not loading and quirks mode issues
...
Fixed multiple issues in admin panel:
1. CSS path: modern-normalize.css → modern-normalize.min.css
(File is actually named .min.css)
2. Icon path: assets/icon.svg → /assets/admin_favicon.svg
(Was relative, now absolute; correct filename)
3. Navigation: /admin/list.php → /admin/
(list.php was renamed to index.php)
4. Short PHP tags: <? → <?php
(Better compatibility, some servers don't enable short_open_tag)
5. Quirks mode warning was due to CSS not loading, not DOCTYPE
(DOCTYPE was already present)
Files modified:
- public/admin/inc/head.php (main fixes)
- public/admin/index.php (short tags)
- public/admin/add.php (short tags)
- public/admin/import.php (short tags)
Need to redeploy for production: just deploy
2026-02-06 13:26:24 +01:00
Théophile Gervreau-Mercier
e789c286de
Refactor admin panel and add migration documentation
...
- Add comprehensive migration guides (DEPLOYMENT_MIGRATION.md, DIRECTORY_STRUCTURE.md, MIGRATION_CHECKLIST.md)
- Refactor admin panel: split add.php, create reusable header/footer
- Update styles: admin.css, common.css, main.css
- Improve public pages: index.php, memoire.php
- Reorganize database documentation into database/docs/
- Update .gitignore and justfile
This prepares for migration to public/ directory structure
2026-02-06 12:14:21 +01:00
Théophile Gervreau-Mercier
d2b3c6ca67
Major refactor
...
- update the structure to have monolithic setup
- updated deployments
- added live-reloading for devops
2026-02-05 20:16:19 +01:00
Théophile Gervreau-Mercier
f23fbb481b
Nginx config, working deploy, basic theme, repo cleanup
2026-02-05 17:37:07 +01:00
Théophile Gervreau-Mercier
467aced734
Restructure repository and implement secure search feature
...
Phase 1: Consolidate shared infrastructure
- Create shared/ directory for common code
- Consolidate Database.php from front-backend and formulaire into unified shared/Database.php
- Smart path detection for test.db vs posterg.db
- Secure search with wildcard escaping and input validation
- Support both singleton and direct instantiation patterns
- Full CRUD methods for admin functionality
- Move RateLimit.php to shared/ (30 requests/min)
- Update all require paths across apps to use shared/
Phase 2: Reorganize directory structure
- Rename front-backend/ → apps/public/
- Rename formulaire/ → apps/admin/
- Rename db/ → database/
- Update all file paths for new structure
- Create root .gitignore excluding databases, cache, logs
Implement secure search feature
- Add apps/public/search.php with full-text search across theses
- Search filters: query, year, orientation, AP program, keywords
- Security features:
- SQL injection prevention (prepared statements)
- Wildcard injection prevention (escape % and _)
- Input validation (max 200 chars, year range 1900-2100)
- Rate limiting (30 req/min per IP)
- Pagination limited to 100 results/page
- XSS protection (htmlspecialchars on output)
Add comprehensive test suite
- Create apps/public/tests/ with proper structure
- tests/Integration/SearchTest.php - 12 search scenarios
- tests/Security/SecurityTest.php - vulnerability testing
- tests/Unit/RateLimitTest.php - rate limit behavior
- Create database/fixtures/CreateTestDatabase.php
- Add apps/public/run-tests.php test runner
- All tests passing (4/4 suites)
Update deployment configuration
- Rename justfile 'sync' recipe to 'deploy'
- Create deploy group with separate deploy-public and deploy-admin
- Add test-deploy recipe for test database
- Exclude *.db, tests/, cache/, *.md from production deploy
- Deploy shared/ to both public and admin locations
Stats: +4482 insertions, -654 deletions across 72 files
2026-02-02 18:53:58 +01:00
Théophile Gervreau-Mercier
95f52d549e
Add comprehensive thesis management system with database migration
...
This commit introduces a complete thesis management interface and migrates
the system from YAML-based storage to SQLite:
Core Changes:
- Add Database.php helper class with PDO connection and entity management
- Add list.php for viewing all theses with filtering and sorting
- Add edit.php for modifying existing thesis records
- Add import.php for migrating legacy YAML data to SQLite
- Add justfile with development tasks (serve, init-test-db, etc.)
Documentation:
- Add MIGRATION.md with complete migration guide and architecture docs
- Update README.md with database setup and Just recipe instructions
- Update .gitignore to exclude test databases and error logs
Modified Forms:
- Enhanced formulaire.php with transaction-based SQLite processing
- Updated index.php with database-driven form options
- Improved thanks.php to read from database views
The new architecture provides:
- Normalized database schema (19 tables, 2 views)
- Transaction safety and referential integrity
- CRUD operations for thesis management
- Filtering by year, orientation, AP program, publication status
- Secure file handling with metadata tracking
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-28 10:08:50 +01:00
Théophile Gervreau-Mercier
0d3fc3ab9a
Added justfile recipe file and the .gitignore
2026-01-27 14:58:00 +01:00