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
.envfile. - 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
-
Copy
.env.exampleto.envand adjust connection credentials:cp .env.example .env -
Install dependencies (including PHPMailer):
composer install -
Configure the database credentials for your Simply.com MySQL server and adjust upload/mail parameters in
.env. -
Review the branding block at the bottom of
.envorconfig/branding.phpif you need to update the default company name, public domain, or logo path. By default the portal ships with the TuxiNet.dk logo located atpublic/assets/branding/tuxinet-logo.svg, which is automatically included on all rendered offers and invoices. -
Run migrations to create all database tables:
php bin/migrate -
Point your web server document root to
public/and ensure the vhost/subdomain isportal.tuxinet.dkso absolute URLs render correctly. -
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.svgand is referenced viaconfig('branding.logo_path'). - Update
.envif you need to change the brand copy or email signature. The defaults reflect the TuxiNet.dk identity and theportal.tuxinet.dkhostname. - Offer and invoice renderers can target the shared templates at
resources/views/documents/offer.phpandresources/views/documents/invoice.php. Both templates automatically include the logo header defined inresources/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.