# Source Code Manifest — FLEXI Platform

Generado: 2026-08-11. Total inventariado: 198 archivos. Se excluyen `vendor/`, `.env`, SQLite local, logs, cachés y secretos.

## Clasificación

- **PROPIO FLEXI:** `app/`, vistas, rutas, tests, configuración propia, migraciones y assets CSS/JS.
- **FRAMEWORK:** `artisan`, bootstrap/base config y front controller derivados del skeleton Laravel.
- **DEPENDENCIA COMPOSER:** declarada por `composer.lock`; código en `vendor/` no se duplica.
- **ASSET ORIGINAL RECUPERADO:** imágenes/fuentes bajo `public/assets/` procedentes de la reconstrucción validada.

## Archivos inventariados

- `.env.example`
- `README.md`
- `app/Http/Controllers/ClientPortalController.php`
- `app/Http/Controllers/ContactController.php`
- `app/Http/Controllers/Controller.php`
- `app/Http/Controllers/Internal/AuditController.php`
- `app/Http/Controllers/Internal/AuthController.php`
- `app/Http/Controllers/Internal/CalculatorController.php`
- `app/Http/Controllers/Internal/ClientController.php`
- `app/Http/Controllers/Internal/DashboardController.php`
- `app/Http/Controllers/Internal/EmergencyRecoveryController.php`
- `app/Http/Controllers/Internal/InitialSetupController.php`
- `app/Http/Controllers/Internal/LoanController.php`
- `app/Http/Controllers/Internal/LoanRequestManagementController.php`
- `app/Http/Controllers/Internal/NotificationController.php`
- `app/Http/Controllers/Internal/PasswordController.php`
- `app/Http/Controllers/Internal/UserController.php`
- `app/Http/Controllers/LoanRequestController.php`
- `app/Http/Controllers/PageController.php`
- `app/Http/Middleware/EnsureActiveSession.php`
- `app/Http/Middleware/RequireRole.php`
- `app/Http/Middleware/SecurityHeaders.php`
- `app/Http/Requests/CalculateLoanRequest.php`
- `app/Http/Requests/StoreClientRequest.php`
- `app/Http/Requests/StoreContactMessage.php`
- `app/Http/Requests/StoreInternalUserRequest.php`
- `app/Http/Requests/StoreLoanRequest.php`
- `app/Http/Requests/StorePaymentRequest.php`
- `app/Http/Requests/UpdateInternalUserRequest.php`
- `app/Mail/LoanApplicantConfirmationMail.php`
- `app/Mail/LoanStatusMail.php`
- `app/Mail/NewLoanRequestMail.php`
- `app/Mail/UserInvitationMail.php`
- `app/Models/AuditLog.php`
- `app/Models/Client.php`
- `app/Models/ContactMessage.php`
- `app/Models/Loan.php`
- `app/Models/LoanCommunication.php`
- `app/Models/LoanInstallment.php`
- `app/Models/LoanRequest.php`
- `app/Models/LoanRequestNote.php`
- `app/Models/LoanRequestStatusHistory.php`
- `app/Models/PanelNotification.php`
- `app/Models/Payment.php`
- `app/Models/User.php`
- `app/Models/UserInvitation.php`
- `app/Policies/UserPolicy.php`
- `app/Providers/AppServiceProvider.php`
- `app/Services/AmortizationCalculator.php`
- `app/Services/AuditService.php`
- `app/Services/IdentityLookup.php`
- `app/Services/LoanCreationService.php`
- `app/Services/LoanNotificationService.php`
- `app/Services/PanelNotificationService.php`
- `app/Services/PaymentAllocationService.php`
- `app/ValueObjects/AmortizationSchedule.php`
- `app/ValueObjects/LoanTerms.php`
- `artisan`
- `bootstrap/app.php`
- `bootstrap/cache/.gitignore`
- `bootstrap/providers.php`
- `composer.json`
- `composer.lock`
- `config/app.php`
- `config/auth.php`
- `config/cache.php`
- `config/database.php`
- `config/features.php`
- `config/filesystems.php`
- `config/loans.php`
- `config/logging.php`
- `config/mail.php`
- `config/management.php`
- `config/queue.php`
- `config/services.php`
- `config/session.php`
- `database/.gitignore`
- `database/factories/ClientFactory.php`
- `database/factories/UserFactory.php`
- `database/migrations/0001_01_01_000000_create_users_table.php`
- `database/migrations/0001_01_01_000001_create_cache_table.php`
- `database/migrations/0001_01_01_000002_create_jobs_table.php`
- `database/migrations/2026_08_11_000001_create_loan_requests_table.php`
- `database/migrations/2026_08_11_000002_create_contact_messages_table.php`
- `database/migrations/2026_08_11_100000_create_internal_platform_tables.php`
- `database/migrations/2026_08_11_110000_backfill_loan_request_identity_hashes.php`
- `database/migrations/2026_08_11_200000_add_security_and_communications.php`
- `database/seeders/DatabaseSeeder.php`
- `docs/ARCHITECTURE.md`
- `docs/CLIENT-PORTAL.md`
- `docs/DATA-MODEL.md`
- `docs/EMERGENCY-RECOVERY.md`
- `docs/FUTURE-LOAN-MANAGEMENT.md`
- `docs/INBOUND-EMAIL.md`
- `docs/INTERNAL-ROLES.md`
- `docs/LOAN-CALCULATION.md`
- `docs/LOAN-LIFECYCLE.md`
- `docs/LOCAL-TESTING.md`
- `docs/PAYMENT-ALLOCATION.md`
- `docs/PRIVACY-REVIEW.md`
- `docs/SMTP-CONFIGURATION.md`
- `docs/manual/ACTUALIZACION-SISTEMA.md`
- `docs/manual/BACKUP-RESTORE.md`
- `docs/manual/CODIGO-FUENTE-FLEXI.md`
- `docs/manual/INSTALACION-CPANEL.md`
- `docs/manual/MANUAL-MAESTRO-FLEXI.md`
- `docs/manual/MANUAL-SUPERADMIN-FLEXI.md`
- `docs/manual/MANUAL-TECNICO-FLEXI.md`
- `docs/manual/MANUAL-USUARIO-FLEXI.md`
- `docs/manual/SEGURIDAD-FLEXI.md`
- `docs/manual/SOURCE-CODE-MANIFEST.md`
- `phpunit.xml`
- `public/.htaccess`
- `public/assets/css/internal.css`
- `public/assets/css/print.css`
- `public/assets/css/site.css`
- `public/assets/images/apple-touch-icon.png`
- `public/assets/images/contacto.png`
- `public/assets/images/conversacion.png`
- `public/assets/images/favicon-32.png`
- `public/assets/images/gris-claro.png`
- `public/assets/images/home-hero.jpg`
- `public/assets/images/logo.png`
- `public/assets/images/servicios.png`
- `public/assets/images/sobre-nosotros.png`
- `public/assets/images/solicitud.png`
- `public/assets/js/internal.js`
- `public/assets/js/print.js`
- `public/assets/js/site.js`
- `public/favicon.ico`
- `public/index.php`
- `public/robots.txt`
- `public/sitemap.xml`
- `resources/css/app.css`
- `resources/js/app.js`
- `resources/js/bootstrap.js`
- `resources/views/components/banner.blade.php`
- `resources/views/components/internal/amortization-table.blade.php`
- `resources/views/components/internal/loan-summary.blade.php`
- `resources/views/components/services.blade.php`
- `resources/views/errors/403.blade.php`
- `resources/views/errors/404.blade.php`
- `resources/views/errors/419.blade.php`
- `resources/views/errors/429.blade.php`
- `resources/views/errors/500.blade.php`
- `resources/views/errors/503.blade.php`
- `resources/views/errors/minimal.blade.php`
- `resources/views/internal/audit/index.blade.php`
- `resources/views/internal/auth/change-password.blade.php`
- `resources/views/internal/auth/emergency.blade.php`
- `resources/views/internal/auth/forgot-password.blade.php`
- `resources/views/internal/auth/invitation.blade.php`
- `resources/views/internal/auth/login.blade.php`
- `resources/views/internal/auth/reset-password.blade.php`
- `resources/views/internal/auth/setup.blade.php`
- `resources/views/internal/calculator/index.blade.php`
- `resources/views/internal/clients/form.blade.php`
- `resources/views/internal/clients/index.blade.php`
- `resources/views/internal/clients/show.blade.php`
- `resources/views/internal/dashboard.blade.php`
- `resources/views/internal/loans/index.blade.php`
- `resources/views/internal/loans/show.blade.php`
- `resources/views/internal/notifications/index.blade.php`
- `resources/views/internal/print/amortization.blade.php`
- `resources/views/internal/print/loan.blade.php`
- `resources/views/internal/requests/index.blade.php`
- `resources/views/internal/requests/show.blade.php`
- `resources/views/internal/settings.blade.php`
- `resources/views/internal/users/form.blade.php`
- `resources/views/internal/users/index.blade.php`
- `resources/views/internal/users/show.blade.php`
- `resources/views/layouts/app.blade.php`
- `resources/views/layouts/internal.blade.php`
- `resources/views/layouts/print.blade.php`
- `resources/views/mail/loan-applicant-confirmation.blade.php`
- `resources/views/mail/loan-request.blade.php`
- `resources/views/mail/loan-status.blade.php`
- `resources/views/mail/user-invitation.blade.php`
- `resources/views/pages/about.blade.php`
- `resources/views/pages/application.blade.php`
- `resources/views/pages/contact.blade.php`
- `resources/views/pages/home.blade.php`
- `resources/views/pages/privacy.blade.php`
- `resources/views/pages/processed.blade.php`
- `resources/views/pages/services.blade.php`
- `resources/views/welcome.blade.php`
- `routes/console.php`
- `routes/web.php`
- `tests/Feature/InternalAuthTest.php`
- `tests/Feature/InternalManagementTest.php`
- `tests/Feature/LoanOperationsTest.php`
- `tests/Feature/LoanRequestTest.php`
- `tests/Feature/PageTest.php`
- `tests/Feature/PhaseBRequirementsTest.php`
- `tests/Feature/PhaseCSecurityTest.php`
- `tests/TestCase.php`
- `tests/Unit/AmortizationCalculatorTest.php`
- `tests/Unit/ExampleTest.php`

## SHA-256 de archivos críticos

| Archivo | SHA-256 |
|---|---|
| `app/Http/Controllers/ClientPortalController.php` | `cce4b22ec7296524e3256e68d0f64b10a7cc0fa9a954ba3354f8b45d8d48e74e` |
| `app/Http/Controllers/ContactController.php` | `9b4a051f77fdcbed429c600c241a2724eb303e96b31dec9adfb37635ec485e87` |
| `app/Http/Controllers/Controller.php` | `25d1c1ef8e6cc8a376553faacfba2b07d9dfaee9bdbb84f14f77517580e9deb1` |
| `app/Http/Controllers/Internal/AuditController.php` | `cd6577d55874d3d5147e7dbb8539f2311f1a84e1e4aec3bbf217777a4a38fbeb` |
| `app/Http/Controllers/Internal/AuthController.php` | `1f4284376d74bb863d3a282598dd5543db3e6f1756fe9e0e59df2d2106d9ac4e` |
| `app/Http/Controllers/Internal/CalculatorController.php` | `75777bebbb8060601c1e3d8c59b17707fe214d7cbc910c347e64847cfcd79539` |
| `app/Http/Controllers/Internal/ClientController.php` | `60f72bd73c4faca991ef084421b46c50a0b731f97da49992acc697f78ce8f871` |
| `app/Http/Controllers/Internal/DashboardController.php` | `0572d4cf9372e9b023f697ad5a8b159331be841716550c4f1ade6c3e17ec339f` |
| `app/Http/Controllers/Internal/EmergencyRecoveryController.php` | `69a20a222211bad147708eab07345fb8653c718d8bcebf1cdabbce9a6af9a0ce` |
| `app/Http/Controllers/Internal/InitialSetupController.php` | `7d9f4365bdd7a5bffd958fc7ad59db2c4b069f94f79d6328c90318ef61899256` |
| `app/Http/Controllers/Internal/LoanController.php` | `3f22455bdb91a730f273578eb29115c564ea7a1edadb304697a2beb790adfc13` |
| `app/Http/Controllers/Internal/LoanRequestManagementController.php` | `6831a0da506d4ad4c336731f75c465c51dff05d1d1eabfeb777bf0df61b2fe32` |
| `app/Http/Controllers/Internal/NotificationController.php` | `22d8b6f13cdf63e98a34d8347810cc4b1d1305cd26e474040baa6e5173c8799c` |
| `app/Http/Controllers/Internal/PasswordController.php` | `408290db17514aeba5be44936a9ebd978341c8f5982619378fe6fbcf67d4911d` |
| `app/Http/Controllers/Internal/UserController.php` | `29a864dd4b5362cdac9500bd1a8e80fe19aeb5d0a7d0cc1c32a16d85c4813c18` |
| `app/Http/Controllers/LoanRequestController.php` | `07087d855a9361f46980620a2e648f1ba938711a8019d749f4d4fa39c4b60ba2` |
| `app/Http/Controllers/PageController.php` | `f4435e72a84df898bcdecb5001f3850028eb11e17e359aa8bcc341ff63b43ab1` |
| `app/Http/Middleware/EnsureActiveSession.php` | `e15ae677993e9d4b0c5c0f50abaab558c791eed7c48f1d5b29261aecd80dd092` |
| `app/Http/Middleware/RequireRole.php` | `0684344d5e552810e048471915c1022aa956075b3df82fa6dfdf2b53e6644eba` |
| `app/Http/Middleware/SecurityHeaders.php` | `a37c4c9a947383053e21b0e5fb20f9077860880e4b98af0cd5d5e90d46b92da0` |
| `app/Http/Requests/CalculateLoanRequest.php` | `149c4aa58c22c6d54821c1a8d02f248b7da489076a427b2b3048563cc75e59fa` |
| `app/Http/Requests/StoreClientRequest.php` | `e6f81568d2acdce263732b4ac25bb3cc9649ced075fe57254a9410664c65cd56` |
| `app/Http/Requests/StoreContactMessage.php` | `1206424b68c90066c0d0b66eb517c169024c4364a3118b6814ea600b7307df97` |
| `app/Http/Requests/StoreInternalUserRequest.php` | `3bf8c925610e62205f1c36ae133055a381ee42ef6f36485a1c2b004069c180c6` |
| `app/Http/Requests/StoreLoanRequest.php` | `e442577edfafca33044a8f2d901607eec8fe345df8e5abe941c3eda879dc80e8` |
| `app/Http/Requests/StorePaymentRequest.php` | `7361021221aee087ba99e797bbc87c3e6f637f2381bc0a77bd7cf4d04f67a807` |
| `app/Http/Requests/UpdateInternalUserRequest.php` | `0206cc1238978397b816a3983ae7dae98bb1c0ab0f7cc9746a214319bd62c4ac` |
| `app/Mail/LoanApplicantConfirmationMail.php` | `41520345846cb5cb85112740aa7df8bbf14aa5596650b86a420ec898b4e1d13d` |
| `app/Mail/LoanStatusMail.php` | `1d32a5a7c9af5f4b63da18a3d6563f33218e253e74a9ccbd2021d9a2a6c40a05` |
| `app/Mail/NewLoanRequestMail.php` | `864f93a9b3b9422d10791d3ea8b7c28aecfebb873a22225a7be73b076a3f17ef` |
| `app/Mail/UserInvitationMail.php` | `6518aef07e3cf0ff90e4708a058abe1841fff758100688da00467c2702ced3ca` |
| `app/Models/AuditLog.php` | `e46af20a8d5873f15fa1421a03754599768c9833aa938d7f17c68feba2eb53b7` |
| `app/Models/Client.php` | `47f5239c3833fd2d8e37b73e9f979c4e2483c4bb4f2481d28475e285a3680a65` |
| `app/Models/ContactMessage.php` | `6486f2f33aee762b2c4dce9f981c59b680bf13b8d49b5edb80f652098c331716` |
| `app/Models/Loan.php` | `7fc2b2dfe003b0bf934842bb4e0c54881dba7b9412b6f2a1e795e5b42f1d7ac6` |
| `app/Models/LoanCommunication.php` | `dd2658061b981bd1f6858410b2bf2a770b7e9de68e39cfebdcec9b0b6dd35fcd` |
| `app/Models/LoanInstallment.php` | `cbd5e5a23e2dc5add1e7d2dd42965288c5d696d2c895230854689c9f8e58e142` |
| `app/Models/LoanRequest.php` | `a3311b8674007b51b09a9c2d98ec403562d556f64e596d6987b83f6bfddb0428` |
| `app/Models/LoanRequestNote.php` | `6e446afbbb2176eb6fe26fb4bd0801385925ef6db806a9993ee395f27144a788` |
| `app/Models/LoanRequestStatusHistory.php` | `fe076c4ab748220203057b5b5e9d94c978088d7e66293c15ba5a0342bf6cd60a` |
| `app/Models/PanelNotification.php` | `eac7678430daf7507903efa8e41e98a114d54180284e679912d9d904712cc1ca` |
| `app/Models/Payment.php` | `614c6a9285d9bb35612d170c48fe343c961a0eadc0460c21826c95972f86d148` |
| `app/Models/User.php` | `604d95ac3e0f2c3eb5891740e631809b0dec749891902de04db5de6105d955cb` |
| `app/Models/UserInvitation.php` | `bfba8b81a9ad860287f89f1762e215e7e265d2ee2ecd7c94c39df92bc1de69d6` |
| `app/Policies/UserPolicy.php` | `e9e3d97833366e1ba63e83180ae2ad8ce97a74ebe791c7ea84e1b85dbae8d15c` |
| `app/Providers/AppServiceProvider.php` | `caf306ef6a25a547bbb7edd5508a39b51c365083eb6dd58378cf2242018e94c7` |
| `app/Services/AmortizationCalculator.php` | `026a508e9754421d4ca4c0848ed89c6a5326dddedcc89cb102ce3aed443a8184` |
| `app/Services/AuditService.php` | `9ec14139cbfc32a5fbec2bc23f4e81ae55c04b744fe2395c07a04b81e4fc21d0` |
| `app/Services/IdentityLookup.php` | `2a03bdd7ffc37868adff32c7035e6282ebf36edd9ceb1167a3fedf1d07a42251` |
| `app/Services/LoanCreationService.php` | `ec27c43fe9ff4fbffa2a7f09f541bce3a5798aaec526548f007b6f530b7f9fa0` |
| `app/Services/LoanNotificationService.php` | `d7b6a86b11ff3c6e7af94061d5b69525dd6701e670b69ad8671d3f3f63b0ea9a` |
| `app/Services/PanelNotificationService.php` | `f53a97bb64487efd3fd0a5b58f2a809fe7faf2f59525dcae2f64ec489c0c72cc` |
| `app/Services/PaymentAllocationService.php` | `7f12061b3c724fd1c0e692d509bce946bdedc2c7055314b7c198352103682db0` |
| `app/ValueObjects/AmortizationSchedule.php` | `1fee81bd2b437435fd5e2114ed778ea2c4df23f0726bc5acd362a6ccbf75a0e1` |
| `app/ValueObjects/LoanTerms.php` | `4a0c8cba16bdb0be15ebce549839b4a58c1624b36338b50dc1c91f4dc15fb989` |
| `bootstrap/app.php` | `9913e004b85f6307be2b50b91048890ff10485e830d71b43aa7ba2cedde08e05` |
| `composer.json` | `5e42bc7d06a297f964b06a1872dcc6db689f1756eb38d40b2cba78f3fe6ff11a` |
| `composer.lock` | `3cf3639479355c13fd024834927272bdd2369d97b33d46cd4f2a4cb0ced32067` |
| `database/migrations/0001_01_01_000000_create_users_table.php` | `10d79883bc08ce46510f9ad8b1830b4d06d586dc56ae2c8bac3b3e491f69a90f` |
| `database/migrations/0001_01_01_000001_create_cache_table.php` | `2ca8398390ecef8eaf72aeac7fefce67f7de631b6f2ec7b7081c8db8953215dc` |
| `database/migrations/0001_01_01_000002_create_jobs_table.php` | `7c9c712adf4091c87bf2612f4d0dccdfa1df4501553e4ac068b83d7bd5462fa5` |
| `database/migrations/2026_08_11_000001_create_loan_requests_table.php` | `66c9d8d22a34e033cf66061b9bd6c4fce4d8eec2c0d55c4c3f9a38780b720087` |
| `database/migrations/2026_08_11_000002_create_contact_messages_table.php` | `a453512405df220d4ee478db522ba9a42cc8a307298c228ff2ee114ba9256ee5` |
| `database/migrations/2026_08_11_100000_create_internal_platform_tables.php` | `9d47646b947974fe9dd83131a4d270950d798d2fbf8f22f11137de6ef69d86f3` |
| `database/migrations/2026_08_11_110000_backfill_loan_request_identity_hashes.php` | `98cff9d84bbbb57a70c6cd07818c3ae06f851a00505f74acf2ea77378758b042` |
| `database/migrations/2026_08_11_200000_add_security_and_communications.php` | `6886847965ad8c8eacf9147f97aa6604c8d637352949d3519f623c21e74b5621` |
| `routes/console.php` | `9adccc33e7dd400683e434774077c7fdb2f299c5712cedf16a43fdf56f2850fa` |
| `routes/web.php` | `d2a695a7ef5972f54f714e4d600b43521aea31a03bcc3774ec81d6cc7c9aef28` |
