Ryanhub - file viewer
filename: README.md
branch: main
back to repo
## Seven O’Clock Dinner Club

### Overview

Seven O’Clock Dinner Club is a small PHP/MySQL web app for a private dinner club: members can register, maintain simple profiles, and contribute photographs and quotes from evenings at the table.

**Important note about authorship:**  
This project is **entirely vibe‑coded by an AI assistant**. The only human input was **high‑level planning, layout direction, and preferred display text / copy choices**. All structure, markup, styles, and implementation details were generated from that guidance.

### Features

- **Public pages**
  - Home with a curated gallery of approved uploads.
  - Members listing with basic profiles.
  - Registration, sign‑in, and simple contact page.

- **Member area**
  - Profile editing (city, bio, links, optional photo).
  - Uploads page to contribute a dinner photograph plus quote/attribution.
  - Lightbox image viewer for uploaded photos.

- **Admin area**
  - Upload moderation and basic stats (depending on how you configure roles).

- **Design**
  - Single column, card‑based layout.
  - Gentle, consistent card fade‑in animations.
  - Soft, dinner‑party palette and typography.

### Tech Stack

- **Backend**: PHP (procedural, mysqli)
- **Database**: MySQL / MariaDB
- **Frontend**: Hand‑rolled HTML, CSS (no frameworks), minimal vanilla JS
- **Runtime target**: Typical local LAMP stack; developed with XAMPP on Windows

### Getting Started

1. **Clone the repo**

   ```bash
   git clone <your-repo-url> seven-oclock-dinner
   cd seven-oclock-dinner
   ```

2. **Create database**

   - Create a new MySQL database (e.g. `seven_oclock_dinner`).
   - Import your schema (tables for `users`, `member_profiles`, `uploads`, etc.).  
     If you don’t have a schema dump checked in yet, you’ll need to create these tables based on the code in `config.php` and the queries in `views/`.

3. **Configure environment**

   - Copy `.env` (or `.env.example` if present) and edit to match your local DB credentials and base URL.
   - Ensure `config.php` is pointing at the correct `.env` and host/settings.

4. **Serve the app**

   - Place the project under your web root, e.g. `C:\xampp\htdocs\7oclockdinner`.
   - Start Apache and MySQL via XAMPP.
   - Visit `http://localhost/7oclockdinner` in your browser.

### File Structure (High Level)

- `config.php` – DB connection and basic app wiring.
- `views/layout/` – Shared layout pieces (`header.php`, `footer.php`).
- `views/public/` – Public and member‑facing pages.
- `views/admin/` – Simple admin/dashboard views.
- `css/app.css` – Global styles, card and layout design, animations.
- `uploads/` – User‑uploaded images (git‑ignored in most setups).

### Development Notes

- **No frontend framework**: Everything is meant to be readable, tweakable, and loosely structured rather than engineered like a large app.
- **Accessibility & motion**: Basic respect for `prefers-reduced-motion` (card animations disable when reduced motion is requested).
- **Security**: Inputs are generally validated and escaped, but before putting this on the open internet you should:
  - Audit authentication and session handling.
  - Double‑check file upload validation and permissions.
  - Lock down admin routes and any debug tooling.

### Authorship & Intent

This codebase is intentionally **human‑directed but AI‑implemented**:

- **Human**: Decided the concept, tone, and the words you see on the page (headlines, copy, and general UX feel).
- **AI**: Translated those preferences into actual code, styles, and behavior, iterating purely via prompts rather than manual editing.

If you modify or extend this project, consider keeping a note here about which parts were human‑coded vs AI‑generated over time.