# Bloom Iris Agency — Web Platform

A complete creative-agency web platform built on **CodeIgniter 3** with an
**HMVC** (Modular Extensions) architecture. It pairs a polished editorial
public website with a full back-office admin panel covering talent
management, portfolio case studies, events with Paystack ticketing, a
journal/blog, partner directory, lead capture and more.

- **Brand:** Deep Plum `#631A6C` · Iris Pink `#B45F9A` · Iris Soft `#d49ec4`
- **Type:** Fraunces (display) + Manrope (body)
- **Stack:** CodeIgniter 3.1.13, PHP 8.x, MySQL/MariaDB, vanilla JS/CSS
- **Payments:** Paystack (GHS), test keys pre-configured

---

## 1. Requirements

| Component | Minimum |
|-----------|---------|
| PHP       | 7.4+ (tested on 8.3) |
| MySQL / MariaDB | 5.7+ / 10.3+ |
| Apache    | with `mod_rewrite` enabled |
| PHP extensions | `mysqli`, `gd`, `curl`, `mbstring`, `json` |

Works on standard cPanel / shared hosting and on local XAMPP.

---

## 2. Installation

### 2a. Place the files

Copy the project into your web root. For local XAMPP this is typically:

```
C:\xampp\htdocs\bloom-iris\
```

### 2b. Create the database

Create an empty database (e.g. `bloom_iris`) in phpMyAdmin, then **either**:

**Option A — import the SQL dump (recommended for shared hosting)**

Import the included `database.sql` file via phpMyAdmin. It creates all 19
tables and seeds starter content.

**Option B — run the built-in migrations**

Migrations are enabled (`application/config/migration.php`). Visiting the
site for the first time with a configured, empty database will build the
schema automatically. You can also trigger it by loading the migration
runner if you add one.

### 2c. Configure the database connection

Edit `application/config/database.php`:

```php
$db['default'] = array(
    'hostname' => 'localhost',
    'username' => 'your_db_user',
    'password' => 'your_db_password',
    'database' => 'bloom_iris',
    'dbdriver' => 'mysqli',
    // ...
);
```

### 2d. Set the base URL

Edit `application/config/config.php`:

```php
$config['base_url'] = 'http://localhost/bloom-iris/';
```

Use your real domain in production, e.g. `https://bloomiris.com/`.

### 2e. File permissions

Make these directories writable by the web server:

```
application/cache/
application/logs/
application/cache/sessions/
assets/uploads/        (and all sub-folders)
```

---

## 3. Admin Panel

The admin panel lives at:

```
http://your-site/admin/login
```

**Default super-admin credentials (change immediately after first login):**

| Field    | Value |
|----------|-------|
| Email    | `admin@bloomiris.com` |
| Password | `BloomIris@2026` |

### Roles

- **Super Admin** — full access, including Admin Users and Settings.
- **Editor / Staff** — manages all content but not users or settings.

---

## 4. Project Structure

```
bloom-iris/
├── index.php                  CodeIgniter front controller
├── .htaccess                  mod_rewrite rules (removes index.php)
├── database.sql               Full schema + seed data
├── assets/
│   ├── css/  (bloom.css, admin.css)
│   ├── js/   (bloom.js, admin.js)
│   └── uploads/               User-uploaded media (writable)
├── application/
│   ├── config/                Site, DB, routes, bloomiris.php (brand/keys)
│   ├── controllers/           Public site controllers
│   ├── core/                  MY_Controller / Loader / Router / Model
│   ├── helpers/               bloom_helper, ui_helper
│   ├── libraries/             Auth, Paystack, Mailer, Uploader
│   ├── migrations/            17 schema migrations
│   ├── models/                17 data models
│   ├── modules/admin/         HMVC admin module (controllers + views)
│   ├── third_party/MX/        HMVC (Modular Extensions) library
│   └── views/                 Public site views, layouts, partials
└── system/                    CodeIgniter 3 core (unmodified logic)
```

---

## 5. Configuration Notes

### Brand & Paystack keys

`application/config/bloomiris.php` holds the brand colours, content
taxonomies, and the Paystack keys. Replace the **test** keys with your
**live** keys before going to production:

```php
$config['paystack_public_key'] = 'pk_live_...';
$config['paystack_secret_key'] = 'sk_live_...';
```

### Site settings

Most operational settings (contact details, social links, SEO defaults,
homepage toggles) are editable from **Admin → Settings** without touching
code.

### Hero carousel

The homepage hero supports three slide types — uploaded image, uploaded
video (MP4/WebM), and YouTube embed — all managed from **Admin → Hero
Slides**.

---

## 6. Key Features

**Public site**

- Editorial homepage with a mixed-media hero carousel and an animated
  client-logo strip
- Services with detail pages and process timelines
- Portfolio case studies with galleries and video
- Talent roster with individual profile pages
- Events with free RSVP and paid Paystack ticketing
- Journal/blog with categories and pagination
- Talent and brand application forms
- Contact form, newsletter signup, XML sitemap

**Admin panel**

- Dashboard with stats, revenue, pipeline and activity feed
- Full CRUD for hero, services, portfolio, talent, events, blog,
  partners, testimonials, team and pages
- Application review with one-click "promote to talent roster"
- Inquiry management with status pipeline and CSV subscriber export
- Ticket sales overview and a gate-side ticket verifier
- Media library, admin-user management, global settings
- Role-based access control and an activity audit trail

---

## 7. Deployment Checklist

- [ ] Database imported / migrated
- [ ] `database.php` credentials set
- [ ] `base_url` set to the production domain
- [ ] Upload, cache and log directories writable
- [ ] Default admin password changed
- [ ] Paystack switched to live keys
- [ ] `config.php`: set `$config['index_page'] = '';` (already done) and
      confirm `.htaccess` rewrite works
- [ ] SMTP / mail settings confirmed if email notifications are used

---

## 8. Support

Developed by **Savior Gbogbo Asorkuenu** · asorkuenu@gmail.com

This platform is delivered as a complete, self-contained codebase. The
public front-end and the full admin module have been verified end-to-end.
