Files
CMS/README.md
2025-10-28 13:56:54 +01:00

3.4 KiB

TuxiNet Portal

This repository contains the groundwork for a dark-themed, responsive customer portal that unifies customer management, project tracking, and an issue/bug workflow. The stack uses vanilla PHP 8.2+ with a lightweight framework layer tailored for Simply.com hosting environments and the portal.tuxinet.dk subdomain deployment.

Features included in this initial foundation

  • Minimal front controller with PSR-4 autoloading and route registration.
  • Session-backed authentication service with Argon2id password hashing.
  • Dark mode responsive layout scaffold for login and dashboard views.
  • Config-driven environment loading via .env file.
  • MySQL-compatible migration runner with dedicated migrations for all core domain tables (customers, projects, issues, comments, attachments, subscriptions, activity, audit, and settings).
  • Configurable mail service built on PHPMailer with SMTP and sendmail support tailored for Simply.com hosting.
  • TuxiNet.dk branding assets plus shared document templates for offers and invoices that automatically include the company logo.
  • Extensible service, model, and middleware layers prepared for RBAC, notifications, and future modules.

Getting started

  1. Copy .env.example to .env and adjust connection credentials:

    cp .env.example .env
    
  2. Install dependencies (including PHPMailer):

    composer install
    
  3. Configure the database credentials for your Simply.com MySQL server and adjust upload/mail parameters in .env.

  4. Review the branding block at the bottom of .env or config/branding.php if you need to update the default company name, public domain, or logo path. By default the portal ships with the TuxiNet.dk logo located at public/assets/branding/tuxinet-logo.svg, which is automatically included on all rendered offers and invoices.

  5. Run migrations to create all database tables:

    php bin/migrate
    
  6. Point your web server document root to public/ and ensure the vhost/subdomain is portal.tuxinet.dk so absolute URLs render correctly.

  7. Create an initial sysadmin user manually (e.g. via SQL) and log in using /login.

Next steps

  • Implement RBAC-aware route middleware for each role and feature module.
  • Flesh out controllers/views for customers, projects, issues, and settings management.
  • Integrate mail notifications, subscription logic, and audit logging handlers.
  • Add file upload handling with MIME validation and thumbnail generation.
  • Build CSV export, saved filters, and read-only sharing features.

Branding & document templates

  • The active logo lives at public/assets/branding/tuxinet-logo.svg and is referenced via config('branding.logo_path').
  • Update .env if you need to change the brand copy or email signature. The defaults reflect the TuxiNet.dk identity and the portal.tuxinet.dk hostname.
  • Offer and invoice renderers can target the shared templates at resources/views/documents/offer.php and resources/views/documents/invoice.php. Both templates automatically include the logo header defined in resources/views/documents/layout.php.

Folder structure

app/
  Controllers/
  Core/
  Http/Middleware/
  Models/
  Services/
  Support/
bootstrap/
config/
database/migrations/
public/
resources/views/
routes/

This structure keeps the codebase organised and ready for incremental feature development across authentication, project management, and notification workflows.