Available for new projectsDiscuss a project
Product documentation

Cobalt Loom Creative Agency

Complete installation, setup, administration, licensing, customization, troubleshooting and release guidance for Cobalt Loom Creative Agency.

01 / Start here

Product overview

Cobalt Loom is a complete commercial website package rather than a static landing-page theme. Installation prepares the database, demonstration content, administrator, application key and domain-bound licence before any public content is released.

ProductCobalt Loom Creative Agency
Version1.0.2
AuthorFrey Gabor
LicenceOne product / one exact domain

Included capabilities

  • Public websiteThree genuinely different homepages, services, portfolio, case studies, team, process, engagements, testimonials, insights, careers, FAQ, contact and legal pages.
  • Focused administrationWebsite settings, homepage selection, services, portfolio, case studies, team, testimonials, articles, enquiries, integrations, licence status and administrator profile.
  • Lead handlingContact, project, newsletter and career forms with CSRF, honeypot, rate limiting, strict validation, protected attachments and optional CAPTCHA.
  • Production foundationsVersioned migrations, prepared PDO statements, secure sessions, local fonts, responsive assets, structured data, sitemap, error pages and maintenance mode.
02 / Environment

Server requirements

Use a normal PHP shared-hosting account or virtual server that can keep application files outside the public document root. Provision the final HTTPS hostname before activating the licence.

RequirementMinimum or expected valueWhy it is required
PHP8.2 or newerTyped application code, password hashing and current runtime security
DatabaseMySQL 8 or MariaDB 10.6+Versioned schema, content and enquiry storage
PHP extensionsPDO MySQL, cURL, OpenSSL, JSON, mbstring, Fileinfo, sessionsDatabase, licensing, UTF-8, secure uploads and authentication
Web serverApache-compatible routing or an equivalent nginx front controllerClean URLs and protected application files
NetworkOutbound HTTPS to shop.freygabor.comLicence activation and periodic validation
TLSValid HTTPS certificateSecure cookies, credentials, forms and licensing traffic

Writable locations during installation and operation

  • config must allow the installer to create installed.php atomically.
  • storage/cache, storage/licence, storage/logs, storage/sessions and storage/uploads must be writable by PHP.
  • The installer must be able to create storage/install.lock after successful licence activation.
  • Use the hosting provider’s ownership model. A common baseline is directories 0755, ordinary files 0644 and sensitive generated files 0640.
03 / Web root

Deploy the package securely

The preferred document root is the package’s public directory. Application, configuration, database, storage, source views and vendor files must not be downloadable from the browser.

Preferred document root
/home/account/cobalt-loom/public
  1. 01

    Extract the package

    Upload and extract the release outside the final public folder when the hosting panel allows it. Keep the supplied directory structure intact.

  2. 02

    Point the domain to public

    Set the domain or subdomain document root to the package’s public directory. The public URL must not include /public.

  3. 03

    Preserve hidden files

    Confirm that .htaccess files were uploaded. Some FTP applications hide or skip dotfiles unless explicitly enabled.

  4. 04

    Set permissions

    Make config and storage writable by the PHP account without granting world-writable permissions.

  5. 05

    Verify isolation

    Requests for README.md, database migrations, configuration and vendor source must return a protected response rather than file contents.

04 / Installation

Run the eight-step installer

Open the final HTTPS domain. A fresh installation automatically redirects to /install. Keep the browser session open because tested database credentials and installer progress are retained only in the protected installation session.

  1. 01

    Welcome

    Review the product name, version, author, documentation and installation stages. Starting the wizard creates a secure installer session.

  2. 02

    Server checks

    The wizard confirms PHP, required extensions, sessions and writable protected directories. Critical failures prevent continuation.

  3. 03

    Database configuration

    Enter host, port, empty database name, database username, password and an optional table prefix. The password is never displayed or written to an ordinary log.

  4. 04

    Database installation

    Retry-safe migrations create the schema, seed polished fictional content, record the installed version and generate a random 256-bit application key.

  5. 05

    Website settings

    Enter the agency name, final canonical HTTPS URL, contact and sender emails, timezone, language and default SEO content.

  6. 06

    Administrator account

    Create the single owner account with a unique password of at least 12 characters, including upper and lowercase letters, a number and a symbol.

  7. 07

    Licence activation

    Enter the Cobalt Loom licence key issued by shop.freygabor.com. Activation binds the entitlement to this exact normalized hostname and installation UUID.

  8. 08

    Completion

    The signed licence response is verified locally, the installation lock is created atomically, the installer session is invalidated and public/admin links become available.

05 / Setup guide

Configure the website after installation

Sign in at /admin/login. Cobalt Loom starts in a controlled state so the owner can replace demonstration material and verify integrations before showing the full website publicly.

  1. 01

    Review Website settings

    Confirm the agency identity, contact details, announcement, footer, default SEO title and description, and demonstration-content notice.

  2. 02

    Choose a homepage

    Select the flagship creative, performance marketing or boutique studio composition as the default homepage. The other two remain available for review.

  3. 03

    Replace fictional content

    Update services, projects, case studies, people, testimonials, results and articles. Keep unfinished records as drafts and use unique stable slugs.

  4. 04

    Review navigation and calls to action

    Check the primary navigation, footer links, enquiry buttons, contact identity and any legal pages required for the operator’s jurisdiction.

  5. 05

    Configure integrations

    Set up SMTP or Brevo, send a test message, enable a supported CAPTCHA provider if needed and confirm forms save enquiries.

  6. 06

    Test as a visitor

    Use a private browser window to test responsive navigation, forms, keyboard focus, 404 pages, maintenance mode and the final public state.

  7. 07

    Publish deliberately

    Disable Coming Soon mode only after content, legal details, email, CAPTCHA, backups and licence status have been reviewed.

Administrator login
https://your-domain.example/admin/login

Administration areas

  • Dashboard and website settings
  • Services, portfolio projects, case studies and project galleries
  • Team members, testimonials and insight articles
  • Stored contact, project and career enquiries
  • Email, Brevo and CAPTCHA integrations with connection tests
  • Administrator profile and password
  • Licence status, manual validation and non-secret system information
06 / Integrations

Email, Brevo and CAPTCHA

Valid enquiries are stored before delivery is attempted, so a temporary provider failure does not discard the lead. Integration secrets are encrypted with the installation application key.

SMTP setup

  1. 01

    Select SMTP

    Enter the provider hostname, username and password or relay key.

  2. 02

    Choose transport security

    Use port 587 with STARTTLS or port 465 with implicit TLS unless the provider specifies another secure combination.

  3. 03

    Authorize the sender

    Use a From address verified by the SMTP provider and configure SPF, DKIM and DMARC.

  4. 04

    Test delivery

    Save the settings and use Test email connection. Confirm receipt and review the protected application log if the generic test message reports failure.

Brevo API setup

  1. 01

    Verify a sender or domain

    Complete sender verification in Brevo before using the API.

  2. 02

    Create an API key

    Create a transactional-email API key and store it only in the protected administration settings.

  3. 03

    Select Brevo API

    Enter the verified sender name/address, administrator recipient and API key.

  4. 04

    Send a test

    Confirm the message arrives and that SPF, DKIM and DMARC align with the visible From domain.

CAPTCHA setup

  • Choose Cloudflare Turnstile or hCaptcha and register the exact production hostname with that provider.
  • Copy the public site key and private secret into Administration → Email & CAPTCHA.
  • Enable protection and save. The contact, project, career and newsletter forms are protected automatically.
  • Test a valid submission and a missing/failed challenge. CAPTCHA supplements CSRF, honeypot checks, validation and rate limiting; it does not replace them.
07 / Licensing

Licence activation and validation

The shop is authoritative for the product, domain, activation, expiry and revocation status. Cobalt Loom never generates keys and never contains a private signing key.

  • One key belongs to Cobalt Loom and one exact normalized production hostname.
  • Another domain or subdomain requires another purchase. The www label is preserved and is not silently added or removed.
  • Same-domain reinstallation can be revalidated by the shop, but the website does not release or transfer a licence locally.
  • Activation and validation requests are sent server-side over HTTPS and successful responses are verified locally with RSA-SHA256.
  • The retained key is encrypted because periodic validation requires it. Interfaces and ordinary logs show only a masked hint.
Validation interval24 hours by default
Maximum offline grace7 days by default
Activation endpoint/api/v1/licenses/activate
Validation endpoint/api/v1/licenses/validate
08 / Customization

Design, content and assets

The visual system uses near-black, warm off-white, saturated cobalt and a restrained coral accent. Bootstrap supplies a dependable baseline while custom CSS creates the editorial identity.

AreaSource
Design tokens and readable CSSpublic/assets/css/app.css
Editable SCSS-compatible sourceresources/scss/app.scss
Frontend interactionspublic/assets/js/app.js
Primary navigationresources/views/layouts/public.php
Local fontspublic/assets/fonts
Social-sharing imagepublic/assets/images/cobalt-loom-social.jpg

Safe customization workflow

  • Back up the database and files before changing code or assets.
  • Keep readable and production-minified CSS/JavaScript synchronized.
  • Test replacement colours for WCAG AA contrast in normal, hover, focus and disabled states.
  • Record the source, author and licence for every replacement image, icon, font or library.
  • Use responsive AVIF/WebP with a fallback, width and height attributes, meaningful alternative text and lazy loading below the fold.
  • Update navigation, sitemap logic, redirects and tests together when public routes change.
09 / Operations

Backups, restores and updates

Treat the database, generated configuration, application key, private uploads and licence state as one recoverable installation. A partial backup may be unusable even if the public assets are intact.

Back up together

  • The complete MySQL or MariaDB database
  • config/installed.php
  • storage/uploads and storage/licence
  • Replaced or customized public assets
  • The exact Cobalt Loom application release

Update procedure

  1. 01

    Read the changelog

    Identify file, database and compatibility changes before touching production.

  2. 02

    Create and verify a backup

    Back up database and files, and confirm that the archive can be opened.

  3. 03

    Enable maintenance mode

    Keep administrators signed in while visitors receive the designed Coming Soon page.

  4. 04

    Merge the release

    Upload changed application/assets without overwriting config/installed.php, storage or buyer customizations.

  5. 05

    Run documented migrations

    Only run database work included with that release, then clear storage/cache.

  6. 06

    Verify and publish

    Test public pages, admin CRUD, forms, uploads and manual licence validation before disabling maintenance mode.

10 / Troubleshooting

Diagnose common installation and runtime issues

Keep display_errors disabled in production. Use the visitor-safe message to identify the category, then review the protected PHP or application log without copying credentials into a support request.

The domain displays a file and folder tree

The document root is pointed at the package root. Point it to public, disable directory listing and verify that database, config and vendor paths no longer return file contents. nginx does not use .htaccess.

Opening /public works but / does not

Do not install using the temporary /public URL. Correct the domain document root so the final canonical URL has no /public path, then restart the installer session.

The installer returns to database configuration

Check host, port, database name, username, password and privileges. The database user must be able to create and alter the product tables.

Migration was interrupted

Correct the server or database issue and retry the migration step. Migrations detect completed checksums and seed data uses stable identifiers.

The site redirects to the installer after setup

Both the completed installation database record and storage/install.lock are required. Check configuration, database access, ownership and the lock file; do not create a fake lock.

The licence page reports a domain mismatch

Confirm the canonical hostname exactly matches the purchased activation, including the subdomain and www policy. A different hostname requires another licence.

The licence server times out

Confirm outbound HTTPS, DNS, server time and cURL. A temporary failure uses the last valid signed response only within the controlled grace period.

A blank page or generic system error appears

Review the protected application/PHP log, PHP version and extensions, database access, generated configuration and storage permissions. Do not expose stack traces publicly.

Forms save but email does not arrive

The enquiry remains in Administration. Verify the sender, provider credentials, port/encryption, spam folder and SPF/DKIM/DMARC, then run the integration test.

An attachment is rejected

Only PDF, DOCX, JPEG and PNG up to 5 MB are accepted. Fileinfo checks the content. Also review PHP upload_max_filesize and post_max_size.

Assets or clean routes return 404

Verify the public document root, front-controller rule, uploaded hidden files and canonical URL. Clear browser/CDN cache after correcting the route.

CSS changes do not appear

Clear browser and CDN caches, update the asset query version and keep app.css, app.min.css and the SCSS source synchronized.

11 / Security

Production security checklist

Cobalt Loom implements secure defaults, but hosting, updates, backups, sender authentication and data retention remain operator responsibilities.

  • Enforce HTTPS and protect the hosting, database and email accounts with unique credentials and MFA where available.
  • Keep PHP, MySQL/MariaDB, PHPMailer and Cobalt Loom releases supported and current.
  • Keep application, configuration, storage, database migrations, views and vendor code outside the public web root.
  • Use a unique administrator password and change it immediately if it has been shared through an insecure channel.
  • Configure SPF, DKIM and DMARC for the sender domain and rotate expired integration keys.
  • Define a real retention policy for enquiries and uploaded personal information.
  • Back up regularly and test restoring the database, configuration, application key, uploads and licence state together.
  • Never send complete licence keys, passwords, API secrets, application keys, database dumps or raw private logs in ordinary support messages.
FAQ

Frequently asked questions

Short answers to common installation, ownership, licensing and support questions.

Where is the administrator login?

Use https://your-domain.example/admin/login after installation and licence activation are complete.

Why does the website show a Coming Soon page after installation?

Coming Soon mode is enabled so the owner can review content and integrations privately. A signed-in administrator can continue working. Disable it in Website settings when the site is ready.

Can I install the package inside a subdirectory?

A root-domain document root pointing to public is recommended. Subdirectory installations require careful route, asset and canonical URL testing and still bind the licence to the exact hostname.

Can one licence be used on another subdomain?

No. One licence is bound to one product and one exact normalized domain or subdomain. Another hostname requires a new licence.

Can I reinstall on the same domain?

Yes, subject to validation by the licensing service. Preserve the canonical hostname and use the documented same-domain recovery process. Do not edit the database or signed licence token.

Does a temporary licensing outage immediately disable the website?

No. A valid signed cached response can continue during the finite grace period. Explicit revocation, expiration, mismatch or an expired grace period blocks content.

Are the supplied clients, testimonials and metrics real?

No. They are fictional demonstration content and must be replaced before the buyer presents the website as a real agency.

Does production require Node.js?

No. Production runs on PHP and MySQL or MariaDB. Node.js or Sass tooling is optional for development-time asset recompilation only.

Which email providers are supported?

The administration supports SMTP and the Brevo transactional email API, including encrypted credentials and a connection test.

Where are uploaded application attachments stored?

Accepted attachments are renamed and stored under protected storage/uploads rather than a publicly executable path.

What should a support request include?

Include the product version, PHP and database versions, final hostname, expected behaviour, reproducible steps and redacted log excerpts. Never include passwords or a complete licence key.

Release history

Changelog

Review the release notes before updating an installed website.

v1.0.228 Jul 2026

Seamless 1600px editorial canvas

  • Reduced the centered desktop website canvas from 1800px to 1600px.
  • Matched the outer browser background to the website paper colour so no dark side gutters are visible.
  • Removed the outer border and shadow while preserving the centered boxed composition.
  • Preserved fluid tablet and mobile behavior.
v1.0.128 Jul 2026

Boxed desktop canvas and hosting maintenance release

  • Added a centered 1800px maximum-width website canvas for wide desktop displays.
  • Preserved fluid tablet and mobile behavior below the desktop maximum width.
  • Updated asset cache versions and commercial release metadata.
  • Included the shared-hosting installer routing correction in the downloadable package.
v1.0.027 Jul 2026

Initial commercial release

  • Added three independent homepage compositions and the complete creative-agency sitemap.
  • Added services, portfolio, case studies, team, testimonials and insights management.
  • Added protected enquiry storage, secure uploads, SMTP/Brevo delivery and CAPTCHA.
  • Added the eight-step installer and mandatory signed FreyDesigns licence activation.
  • Added one-domain enforcement, cached validation, manual validation and finite grace handling.
  • Added accessibility, structured data, sitemap, maintenance and production error pages.
  • Added complete documentation, attribution and the automated test suite.
Documentation did not solve it?

Send a safe, reproducible support request.

Include Cobalt Loom version 1.0.2, PHP and database versions, the final hostname, expected behaviour, steps to reproduce and redacted log excerpts.

Do not send passwords, API secrets, database dumps, application keys or a complete licence key.