Skip to content

krissphi/folio-cms-laravel

Repository files navigation

πŸ“ Folio CMS

A modern Content Management System built with Laravel, featuring a RESTful API for Flutter integration.

πŸš€ Features

Web Interface

  • βœ… Categories Management - Full CRUD for content categories
  • βœ… Posts Management - Complete blog post management system
  • βœ… User Management - User authentication and management
  • βœ… Modern UI - Beautiful gradient design with smooth animations
  • βœ… Responsive Layout - Works on all devices

RESTful API

  • βœ… Categories API - CRUD operations for categories
  • βœ… Posts API - Full post management with filtering & pagination
  • βœ… JSON Responses - Consistent response format
  • βœ… CORS Enabled - Ready for cross-origin requests
  • βœ… Error Handling - Comprehensive error responses
  • βœ… Relationships - Eager loading for optimal performance

API Features

  • πŸ” Filtering - Filter by status, category, search
  • πŸ“„ Pagination - Customizable pagination
  • πŸ”„ Sorting - Sort by any field, asc/desc
  • πŸ“Š Statistics - Posts count, categories count
  • πŸ”— Relationships - Auto-load user & category data

πŸ› οΈ Tech Stack

  • Framework: Laravel 11.x
  • Database: MySQL
  • Server: Nginx (Laragon)
  • Frontend: Blade Templates + Custom CSS
  • API: RESTful JSON API

πŸ“‹ Prerequisites

  • PHP >= 8.2
  • Composer
  • MySQL
  • Laragon (or Nginx/Apache)
  • Git

πŸ”§ Installation

1. Clone Repository

git clone https://github.com/krissphi/folio-cms-laravel.git
cd folio-cms-laravel

2. Install Dependencies

composer install

3. Environment Setup

cp .env.example .env
php artisan key:generate

4. Database Configuration

Update .env file:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_folio_cms
DB_USERNAME=root
DB_PASSWORD=

5. Run Migrations & Seeders

php artisan migrate --seed

6. Storage Link

php artisan storage:link

7. Start Server

Option 1: Using Laragon

  • Start Laragon
  • Access: http://folio-cms.test

Option 2: PHP Built-in Server (For Mobile Testing)

php artisan serve --host=0.0.0.0 --port=8000

Access: http://localhost:8000 or http://192.168.x.x:8000

πŸ“± API Documentation

Base URL

http://folio-cms.test/api/v1

Endpoints

Categories

GET    /api/v1/categories           - Get all categories
GET    /api/v1/categories/{id}      - Get single category
POST   /api/v1/categories           - Create category
PUT    /api/v1/categories/{id}      - Update category
DELETE /api/v1/categories/{id}      - Delete category

Posts

GET    /api/v1/posts                - Get all posts
GET    /api/v1/posts/{id}           - Get single post
POST   /api/v1/posts                - Create post
PUT    /api/v1/posts/{id}           - Update post
DELETE /api/v1/posts/{id}           - Delete post

Query Parameters (Posts)

?status=published              - Filter by status
?category_id=1                 - Filter by category
?search=keyword                - Search by title
?sort_by=created_at           - Sort field
?sort_order=desc              - Sort order
?per_page=10                  - Items per page
?page=1                       - Page number

Example Response

{
		"success": true,
		"message": "Posts retrieved successfully",
		"data": [...],
		"pagination": {
				"total": 50,
				"per_page": 10,
				"current_page": 1,
				"last_page": 5
		}
}

πŸ“š Documentation Files

🎯 Quick Start

Test API

# Health check
curl http://folio-cms.test/api/health

# Get categories
curl http://folio-cms.test/api/v1/categories

# Get posts
curl http://folio-cms.test/api/v1/posts

Web Interface

http://folio-cms.test              - Home
http://folio-cms.test/posts        - Posts Management
http://folio-cms.test/categories   - Categories Management

πŸ“± Flutter Integration

1. Add HTTP Package

dependencies:
	http: ^1.1.0

2. Configuration

class ApiConfig {
	static const String baseUrl = 'http://192.168.0.3:8000/api/v1';
}

Complete Flutter integration code available in FLUTTER_INTEGRATION.dart

πŸ—‚οΈ Project Structure

folio-cms/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ Http/Controllers/
β”‚   β”‚   β”œβ”€β”€ Api/
β”‚   β”‚   β”‚   β”œβ”€β”€ CategoryApiController.php
β”‚   β”‚   β”‚   └── PostApiController.php
β”‚   β”‚   β”œβ”€β”€ CategoryController.php
β”‚   β”‚   └── PostController.php
β”‚   └── Models/
β”‚       β”œβ”€β”€ Category.php
β”‚       β”œβ”€β”€ Post.php
β”‚       └── User.php
β”œβ”€β”€ database/
β”‚   β”œβ”€β”€ factories/
β”‚   β”œβ”€β”€ migrations/
β”‚   └── seeders/
β”œβ”€β”€ resources/views/
β”‚   β”œβ”€β”€ categories/
β”‚   └── posts/
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ api.php
β”‚   └── web.php
└── config/
		└── cors.php

πŸ› Troubleshooting

403 Forbidden on Mobile

Use PHP built-in server:

php artisan serve --host=0.0.0.0 --port=8000

Then access via IP: http://192.168.x.x:8000/api/v1/posts

See FIX_403_FORBIDDEN.md for details.

License

The Laravel framework is open-sourced software licensed under the MIT license.

πŸ‘¨β€πŸ’» Author

krissphi


Built with ❀️ using Laravel

About

Content Management System (CMS) using laravel

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages