Update README with comprehensive project documentation
This commit is contained in:
parent
0187c2d822
commit
94fe847c22
1 changed files with 259 additions and 39 deletions
298
README.md
298
README.md
|
|
@ -1,59 +1,279 @@
|
|||
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>
|
||||
# MAD Lawsuit Court Docket Website
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
|
||||
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
|
||||
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
|
||||
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
|
||||
</p>
|
||||
A public-facing website for displaying court documents and filings for the lawsuit: **Elizabeth Kragh v. Montana Association of the Deaf**.
|
||||
|
||||
## About Laravel
|
||||
**Live Site**: https://v2.mad-lawsuit.org
|
||||
**Admin Dashboard**: https://v2.mad-lawsuit.org/admin/login
|
||||
|
||||
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
|
||||
## 📋 Project Overview
|
||||
|
||||
- [Simple, fast routing engine](https://laravel.com/docs/routing).
|
||||
- [Powerful dependency injection container](https://laravel.com/docs/container).
|
||||
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
|
||||
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
|
||||
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
|
||||
- [Robust background job processing](https://laravel.com/docs/queues).
|
||||
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
|
||||
This website provides public access to court documents from an ongoing lawsuit in Montana state court. Since the Montana court system requires a licensed attorney electronic account for access, this platform ensures transparency by making all case filings, motions, exhibits, and court decisions publicly accessible.
|
||||
|
||||
Laravel is accessible, powerful, and provides tools required for large, robust applications.
|
||||
### Purpose
|
||||
|
||||
## Learning Laravel
|
||||
- **Public Transparency**: Makes court proceedings accessible to anyone interested
|
||||
- **Document Organization**: Centralized, chronological display of all case filings
|
||||
- **Real-time Updates**: Email subscription system for case updates
|
||||
- **Professional Presentation**: Clean interface with document summaries and metadata
|
||||
|
||||
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. You can also check out [Laravel Learn](https://laravel.com/learn), where you will be guided through building a modern Laravel application.
|
||||
### Target Audience
|
||||
|
||||
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
|
||||
- General public following the case
|
||||
- Legal community (attorneys, paralegals, law students)
|
||||
- Disability rights advocacy groups
|
||||
- Media and journalists
|
||||
- Researchers studying the case
|
||||
|
||||
## Laravel Sponsors
|
||||
## 🛠️ Technology Stack
|
||||
|
||||
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com).
|
||||
### Backend
|
||||
- **Framework**: Laravel 12.43.1
|
||||
- **Language**: PHP 8.3.28
|
||||
- **Database**: PostgreSQL 16
|
||||
- **ORM**: Eloquent
|
||||
- **Authentication**: Laravel Sanctum + Session
|
||||
|
||||
### Premium Partners
|
||||
### Frontend
|
||||
- **Framework**: Vue 3 with TypeScript
|
||||
- **Routing**: Inertia.js (SSR-like experience)
|
||||
- **Styling**: Tailwind CSS 3.x
|
||||
- **Build Tool**: Vite 7.x
|
||||
- **Components**: Vue Single File Components (SFC)
|
||||
|
||||
- **[Vehikl](https://vehikl.com)**
|
||||
- **[Tighten Co.](https://tighten.co)**
|
||||
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
|
||||
- **[64 Robots](https://64robots.com)**
|
||||
- **[Curotec](https://www.curotec.com/services/technologies/laravel)**
|
||||
- **[DevSquad](https://devsquad.com/hire-laravel-developers)**
|
||||
- **[Redberry](https://redberry.international/laravel-development)**
|
||||
- **[Active Logic](https://activelogic.com)**
|
||||
### Infrastructure
|
||||
- **Containerization**: Docker with Alpine Linux
|
||||
- **Web Server**: nginx 1.28.0
|
||||
- **PHP**: PHP-FPM 8.3.28
|
||||
- **Reverse Proxy**: Caddy (with automatic SSL)
|
||||
- **Deployment**: Production server at 10.4.0.205
|
||||
|
||||
## Contributing
|
||||
## ✨ Features
|
||||
|
||||
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
|
||||
### Public Website
|
||||
- **Court Docket Display**: Chronological list of all court filings
|
||||
- **Document Viewer**:
|
||||
- Desktop: Modal PDF viewer with download option
|
||||
- Mobile: Opens PDFs in new tab (optimized for iOS Safari)
|
||||
- **Email Subscriptions**: Users can subscribe for case updates
|
||||
- **Responsive Design**: Optimized for desktop, tablet, and mobile
|
||||
- **Case Information**: Status, last updated date, and case details
|
||||
|
||||
## Code of Conduct
|
||||
### Admin Dashboard
|
||||
- **Authentication**: Secure session-based login
|
||||
- **Docket Entry Management**: Full CRUD operations
|
||||
- Create new entries with date, title, and summary
|
||||
- Edit existing entries
|
||||
- Delete entries (cascades to associated documents)
|
||||
- View entry details
|
||||
- **Document Management**:
|
||||
- Upload PDF documents (10MB max)
|
||||
- UUID-based file naming for security
|
||||
- Multiple documents per docket entry
|
||||
- Delete documents
|
||||
- **Subscriber Management**:
|
||||
- View all subscribers (paginated, 50 per page)
|
||||
- Deactivate subscribers
|
||||
- Statistics dashboard (total, active, inactive)
|
||||
- **Dashboard Statistics**: Quick overview of entries, documents, and subscribers
|
||||
|
||||
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
|
||||
## 🚀 Getting Started
|
||||
|
||||
## Security Vulnerabilities
|
||||
### Prerequisites
|
||||
- PHP 8.3+
|
||||
- Composer
|
||||
- Node.js 18+ and npm
|
||||
- PostgreSQL 16+
|
||||
- Docker (for production deployment)
|
||||
|
||||
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
|
||||
### Local Development Setup
|
||||
|
||||
## License
|
||||
1. **Clone the repository**
|
||||
```bash
|
||||
git clone https://gitea.sigd.net/chaulmark/mad-lawsuit.git
|
||||
cd mad-lawsuit
|
||||
```
|
||||
|
||||
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
|
||||
2. **Install PHP dependencies**
|
||||
```bash
|
||||
composer install
|
||||
```
|
||||
|
||||
3. **Install JavaScript dependencies**
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
4. **Configure environment**
|
||||
```bash
|
||||
cp .env.example .env
|
||||
php artisan key:generate
|
||||
```
|
||||
|
||||
5. **Configure database**
|
||||
Edit `.env` with your PostgreSQL credentials:
|
||||
```env
|
||||
DB_CONNECTION=pgsql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=mad_lawsuit
|
||||
DB_USERNAME=your_username
|
||||
DB_PASSWORD=your_password
|
||||
```
|
||||
|
||||
6. **Run migrations**
|
||||
```bash
|
||||
php artisan migrate
|
||||
```
|
||||
|
||||
7. **Seed admin user**
|
||||
```bash
|
||||
php artisan db:seed --class=AdminSeeder
|
||||
```
|
||||
|
||||
8. **Create storage symlink**
|
||||
```bash
|
||||
php artisan storage:link
|
||||
```
|
||||
|
||||
9. **Start development servers**
|
||||
```bash
|
||||
# Terminal 1: Laravel development server
|
||||
php artisan serve
|
||||
|
||||
# Terminal 2: Vite development server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
10. **Access the application**
|
||||
- Public site: http://localhost:8000
|
||||
- Admin dashboard: http://localhost:8000/admin/login
|
||||
- Default credentials: See `database/seeders/AdminSeeder.php`
|
||||
|
||||
### Production Deployment
|
||||
|
||||
See [DEPLOYMENT.md](DEPLOYMENT.md) for detailed production deployment instructions using Docker.
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
```
|
||||
├── app/
|
||||
│ ├── Http/
|
||||
│ │ ├── Controllers/
|
||||
│ │ │ ├── Admin/ # Admin dashboard controllers
|
||||
│ │ │ ├── HomeController.php
|
||||
│ │ │ └── SubscriptionController.php
|
||||
│ │ └── Middleware/
|
||||
│ │ └── AdminAuth.php # Admin authentication middleware
|
||||
│ └── Models/
|
||||
│ ├── AdminUser.php
|
||||
│ ├── DocketEntry.php
|
||||
│ ├── Document.php
|
||||
│ └── Subscription.php
|
||||
├── database/
|
||||
│ ├── migrations/ # Database schema
|
||||
│ └── seeders/
|
||||
│ ├── AdminSeeder.php
|
||||
│ └── V1DataMigrationSeeder.php
|
||||
├── resources/
|
||||
│ ├── js/
|
||||
│ │ ├── Components/
|
||||
│ │ │ └── PDFViewer.vue # PDF modal viewer
|
||||
│ │ ├── Pages/
|
||||
│ │ │ ├── Home.vue # Public homepage
|
||||
│ │ │ └── Admin/ # Admin dashboard pages
|
||||
│ │ └── app.ts
|
||||
│ └── css/
|
||||
│ └── app.css
|
||||
├── routes/
|
||||
│ └── web.php # Application routes
|
||||
├── docker/ # Docker configuration
|
||||
├── cline_docs/ # Project documentation
|
||||
└── storage/
|
||||
└── app/
|
||||
└── public/
|
||||
└── documents/ # Uploaded PDF files
|
||||
```
|
||||
|
||||
## 🔐 Security
|
||||
|
||||
- **Admin Authentication**: Session-based authentication separate from Laravel Breeze
|
||||
- **File Security**: UUID-based file naming prevents direct access guessing
|
||||
- **CSRF Protection**: Laravel's built-in CSRF protection on all forms
|
||||
- **SQL Injection**: Eloquent ORM prevents SQL injection
|
||||
- **XSS Protection**: Vue.js automatic escaping
|
||||
- **HTTPS**: Automatic SSL via Caddy in production
|
||||
|
||||
## 📊 Database Schema
|
||||
|
||||
### Tables
|
||||
- **docket_entries**: Court filings with date, title, summary, notes
|
||||
- **documents**: PDF files linked to docket entries
|
||||
- **subscriptions**: Email subscribers with active/inactive status
|
||||
- **admin_users**: Admin authentication
|
||||
|
||||
### Relationships
|
||||
- One docket entry has many documents
|
||||
- Documents cascade delete when entry is deleted
|
||||
- Subscriptions are soft-deleted (is_active flag)
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
```bash
|
||||
# Run PHP tests
|
||||
php artisan test
|
||||
|
||||
# Run with coverage
|
||||
php artisan test --coverage
|
||||
```
|
||||
|
||||
## 📝 API Endpoints
|
||||
|
||||
### Public Routes
|
||||
- `GET /` - Homepage with docket entries
|
||||
- `POST /api/subscribe` - Email subscription
|
||||
- `GET /api/documents/{id}/download` - Download PDF
|
||||
|
||||
### Admin Routes (requires authentication)
|
||||
- `GET /admin/login` - Admin login page
|
||||
- `POST /admin/login` - Process login
|
||||
- `POST /admin/logout` - Logout
|
||||
- `GET /admin/dashboard` - Admin dashboard
|
||||
- Resource routes for:
|
||||
- `/admin/docket-entries` - Docket entry management
|
||||
- `/admin/documents` - Document management
|
||||
- `/admin/subscribers` - Subscriber management
|
||||
|
||||
## 🐛 Known Issues & Solutions
|
||||
|
||||
### Mobile PDF Viewing
|
||||
- **Issue**: iOS Safari renders PDFs in iframes as single-page images
|
||||
- **Solution**: On screens < 768px, PDFs open in a new tab instead of modal viewer
|
||||
|
||||
### Admin Subscribers Page
|
||||
- **Fixed**: Changed pagination from `->through()` to `->items()` to properly pass array to Vue
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
This is a private project for a specific lawsuit. For questions or issues, contact the repository owner.
|
||||
|
||||
## 📄 License
|
||||
|
||||
Proprietary - All rights reserved.
|
||||
|
||||
## 👥 Credits
|
||||
|
||||
- **Development**: Built with Laravel, Vue.js, and Inertia.js
|
||||
- **Design**: DeafGain LLC (http://deafgain.org)
|
||||
- **Hosting**: Self-hosted on dedicated infrastructure
|
||||
|
||||
## 📞 Support
|
||||
|
||||
For technical issues or questions:
|
||||
- Repository: https://gitea.sigd.net/chaulmark/mad-lawsuit
|
||||
- Production URL: https://v2.mad-lawsuit.org
|
||||
|
||||
---
|
||||
|
||||
**Version**: 2.0
|
||||
**Last Updated**: December 2025
|
||||
**Status**: Production Ready ✅
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue