📍 Developed as a freelance project for the Municipality of Sairé-PE, used officially for about 6 months in 2021.
About • Features • Technologies • App Routes • Getting Started • Final Notes
This project is a municipal institutional website that includes a dynamic CMS, allowing administrators to manage menus, pages, publications, photo galleries, and other informational content through a friendly admin panel. The site is public-facing and was tailored for a local government audience.
- Dynamic homepage with featured posts and gallery highlights
- News section with full article navigation
- Interactive photo gallery with modal preview and details
- Global search by term (news, galleries, and pages)
- Custom header, footer, and menu
- Role and permission management (Admin/User)
- User CRUD with filters and export options
- Audit logs for tracking system actions
- Menu and submenu manager (links to internal or external pages)
- Dynamic pages with content editor and image attachment
- Categories for tagging galleries and news
- News publication manager (content, tags, images)
- Gallery manager (photo upload, tags, descriptions)
- Password update and profile management
This CMS was built with a custom Laravel stack, using:
- Laravel — Robust PHP framework for backend and admin panel
- Blade — Laravel templating engine for dynamic HTML rendering
- Spatie Media Library — File/media uploads and conversions
- JavaScript — For dynamic frontend interactions (gallery, toggles, etc.)
- CKEditor — Rich text editing for publications and pages
- jQuery & Vanilla JS — Used throughout the admin and public site
- Bootstrap (customized) — Layout and UI consistency
- Audit Logs — Full change tracking for all major resources
⚙️ The system was designed to be modular and easily expandable for other municipalities or small content-based platforms.
| Method | Path | Description |
|---|---|---|
| GET | / |
Homepage |
| GET | /galeria |
Gallery page |
| GET | /noticias |
News/publications list |
| GET | /noticias/{title} |
Single publication details |
| GET | /pagina/{title} |
Static content page view |
| GET | /pesquisa |
Global search |
| GET | /pesquisa/publications |
Fetch search for publications |
| GET | /pesquisa/pages |
Fetch search for static pages |
| GET | /pesquisa/galleries |
Fetch search for galleries |
| Resource | Description |
|---|---|
| Permissions | Manage access control permissions |
| Roles | Define user roles and assign permissions |
| Users | Admin user management |
| Audit Logs | System activity tracking |
| Menus | Main navigation structure |
| Submenus | Secondary navigation structure |
| Pages | Static institutional pages |
| Publications | Create, edit, delete news articles |
| Categories | Tag management |
| Galleries | Manage photo collections |
| Profile | Password update and profile management |
🔐 All admin routes are protected by authentication middleware.
- PHP >= 8.1
- Laravel >= 10
- Composer
- MySQL or compatible DB
# Clone the project
git clone https://github.com/issagomesdev/saire.git
cd saire
# Install PHP dependencies
composer install
# Copy environment config and generate app key
cp .env.example .env
php artisan key:generate
# Import the database
# Go to the "database/db" folder and import the "base.sql" file into your database.
# Configure your .env variables
# Link media storage
php artisan storage:link
# Serve locally
php artisan serve
# Access /admin with:
# Email: admin@admin.com
# Password: password- This project was developed as a custom CMS for a municipal institution in Pernambuco.
- It was maintained for 6 months under a PJ contract and later discontinued by the client.
