A comprehensive URL shortening web service by MWBM Partners Ltd (t/a MWservices).
Successor to the internal "MWlink" service β now expanded into a full-featured, multi-domain platform.
Go2My.Link is a URL shortening platform comprising three interconnected web properties:
| Domain | Component | Purpose |
|---|---|---|
| π go2my.link | π Main Website (A) | Public face, sign-up, short link creation |
| π§ admin.go2my.link | π Admin Dashboard (A) | User/org dashboard, link management, settings |
| π g2my.link | π Redirect Engine (B) | Default domain for shortened URLs |
| π lnks.page | π LinksPage (C) | LinkTree-like customisable link listing pages |
- π URL Shortening β Random short codes, anonymous + authenticated creation, copy-to-clipboard
- π Redirect Engine β Fast redirect resolution via stored procedure, DNT respect, destination validation
- π Authentication β Registration, login (with adaptive CAPTCHA), logout, email verification, password reset
- π Session Management β Database-backed sessions, multi-device tracking, remote revoke
- π₯οΈ Admin Dashboard β Link CRUD (create/edit/list/delete), profile settings, password change, session management
- π¨ Dark/Light Mode β Bootstrap 5.3 colour modes, auto/light/dark toggle, FOUC prevention
- βΏ Accessibility β WCAG 2.1 AA compliant, screen reader support, skip-to-content, ARIA live regions
- π i18n β Translation-ready
__()function, locale detection, interim Google Translate widget - π Security β Argon2id hashing, SHA-256 token storage, CSRF protection, account lockout, rate limiting
- π§ Transactional Email β Multipart MIME (text/plain + AMP + HTML), dark mode, preheader text, modern headers
- π¨ Breach Response β GlobalAdmin mass credential reset, session revocation, ENCRYPTION_SALT rotation, batch notification emails
- π Static Pages β About, Features, Pricing, Contact (with email), Legal (Terms, Privacy, Cookies)
- π URL Info β Public short code lookup with masked destination, status badges
- π JSON Schema Validation β Schema definitions (draft 2020-12) with pure-PHP validator for API responses and database JSON
- π’ Organisations β Create/manage organisations, member invitations (email with tokenised accept), role enforcement, custom domain DNS verification, short domain management
- π‘οΈ DNT/GPC β Do Not Track & Global Privacy Control detection, CSP headers, HSTS, custom error pages
- πͺ Cookie Consent β GDPR opt-in/opt-out jurisdiction detection, consent banner, preferences modal, consent API
- π Data Rights β GDPR Article 15-22 compliance: data export, deletion requests, anonymisation, privacy dashboard
- π Legal Documents β Terms of Use, Privacy Policy, Cookie Policy, Copyright Notice, Acceptable Use Policy
- π± PWA β Progressive Web App manifests and service workers for all 3 web properties
- βΏ WCAG 2.1 AA β Full accessibility audit with 23+ files fixed: landmarks, ARIA, contrast, headings, forms
- π Pre-Release Audit β Security hardening (XSS, SQLi, open redirect), WCAG refinements, W3C compliance, email template contrast
- π¨ Logo Integration β SVG + PNG
<picture>fallback in navbar, footer, and all landing pages - π Landing Pages β Auto-refresh, countdown ring, dark mode, footer pinning, vertical centering
- π Custom Domain Integration β Finalise client domain setup flow, DNS verification automation, redirect engine integration, setup documentation (#91)
- π‘ REST API β JSON/XML endpoints, API key auth, OpenAPI/Swagger docs (#75)
- π Analytics β Click tracking, geographic maps, device breakdown, data export
- π LinksPage β Template system, WYSIWYG editor, custom domains, age verification
- π Advanced Redirects β Scheduled, device-based, geo-based routing, age gates
- π Advanced Auth (SIGNula) β Social login (Google/GitHub), 2FA (TOTP), passkeys (WebAuthn), SSO
- π° Payments (SIGNula) β Subscription tiers, PayPal, Apple Pay, Google Pay, crypto
| Layer | Technology |
|---|---|
| π Backend | PHP 8.4+ / 8.5+ (MySQLi, prepared statements only) |
| ποΈ Database | MySQL 8.0+ (InnoDB, utf8mb4, stored procedures) |
| π¨ Frontend | HTML5, CSS3, Bootstrap 5.3, jQuery 3.7, Font Awesome 6 |
| π Charts | Chart.js 4.4, Leaflet.js (planned) |
| π’ Hosting | Dreamhost Shared Hosting (no CLI/Composer) |
| π€ CI/CD | GitHub Actions (PHP lint, release, SFTP deploy) |
| Phase | Version | Name | Issues | Status | |
|---|---|---|---|---|---|
| β | 0 | v0.1.0 | Scaffolding | 7 | Complete |
| β | 1 | v0.2.0 | Database | 5 | Complete |
| β | 2 | v0.3.0 | PHP Framework | 11 | Complete |
| β | 3 | v0.4.0 | Core Product | 10 | Complete |
| β | 4 | v0.5.0 | User System: Auth & Dashboard | 4 | Complete |
| β | 5 | v0.6.0 | Organisation Management | 1 | Complete |
| β | 6 | v0.7.0 | Compliance, Legal & Pre-Launch | 7/8 | Complete |
| β | β | v1.0.0-rc | PRE-RELEASE CANDIDATE | β | Tagged |
| β³ | 7 | v1.1.0 | API & Analytics | 8 | In Progress |
| π | 8 | v1.2.0 | LinksPage | 6 | Post-Launch |
| π | 9 | v1.3.0 | Advanced Redirects | 6 | Post-Launch |
| π | 10 | v1.4.0 | Advanced Authentication (SIGNula) | 4 | Post-Launch |
| π | 11 | v1.5.0 | Payments & Subscriptions (SIGNula) | 4 | Post-Launch |
59 of 89 issues complete (66%) β tracked on the GitHub Project Board
- π Full
web/directory structure for all 3 components - π Auth credentials templates with direct-access guards
- π Documentation framework (README, CHANGELOG, PROJECT_STATUS, DEV_NOTES, docs/)
- ποΈ GitHub infrastructure (issues, milestones, project board, labels, Actions)
- π "Coming Soon" landing pages for all 3 domains (auto-refresh, countdown ring, dark mode)
- π
.htaccessfoundation (HTTPS, security headers, clean URLs, routing) - π¨ Brand guidelines, logo assets, and full BrandKit (SVG/PNG logos, app icons, favicons, PWA icons)
- ποΈ 30-table schema (
mwtools_Go2MyLink) with InnoDB + utf8mb4 - β‘ 3 stored procedures (lookupShortURL, logActivity, generateShortCode)
- π¦ 6 migration scripts for existing MWlink data (480 URLs, 5 orgs, 7 users)
- π± Seed data (subscription tiers, settings, LinksPage templates, languages)
- π οΈ 8 shared function files: DB connection/queries, settings, security, error handling, activity logging, i18n, routing
- π¨ Template engine: header, nav, footer with Bootstrap 5.3 CDN + local fallback
- βΏ Accessibility helpers (formField, ARIA, skip-to-content)
- π i18n with
__()translation function + locale detection + language switcher - π¦ Third-party libraries: Bootstrap 5.3.3, jQuery 3.7.1, Font Awesome 6.5.1, Chart.js 4.4.7
- π Redirect engine with resolver functions + stored procedure lookup
- π« Branded error pages (404, expired, validating) with countdown timers
- π€ Dynamic robots.txt + org-specific favicon handlers
- β¨ Anonymous URL creation with rate limiting + CAPTCHA (Turnstile/reCAPTCHA)
- π‘ Internal API (
POST /api/create/) with CSRF + CAPTCHA + no-JS fallback - π Homepage with AJAX URL shortening form + copy-to-clipboard
- π Static pages: About, Features, Pricing, Contact, Legal
- π URL info/preview page with status badges
- π¨ Dark/light mode theme system
- π Auth engine: register, login, logout, password reset/change, email verification
- π Database-backed session management with multi-device tracking + revoke
- π§ Transactional email system with 4 HTML templates
- π Auth pages: Register, Login, Forgot Password, Reset Password, Verify Email, Logout
- π₯οΈ Admin dashboard: stats overview, link CRUD, profile + password change, session management
- π± 14 database settings for auth, security, email, and password policy
- π’ Organisation CRUD: create, edit settings, overview dashboard with stats
- π₯ Member management: invite (email with tokenised accept), role change (User β Admin), remove
- π Custom domain management: add, DNS TXT verification, remove
- π Short domain management: add, set default, remove
- π‘οΈ Role enforcement: GlobalAdmin > Admin > User with
canManageOrg()permission check - ποΈ tblOrgInvitations schema + 12 org settings + JSON Schema
- β π Legal document templates β Terms, Privacy, Cookies, Copyright, AUP (#61)
- β πͺ Cookie consent system β jurisdiction-aware banner, preferences modal, consent API (#62)
- β π Data subject rights β GDPR export, deletion, anonymisation, privacy dashboard (#63)
- β π‘οΈ DNT/GPC support & production hardening β CSP headers, HSTS, error pages (#64)
- β π± PWA manifest & service worker β offline fallback, app icons for all 3 properties (#65)
- β βΏ WCAG 2.1 AA audit β 23 files fixed: landmarks, ARIA, contrast, headings, forms (#66)
- β ποΈ Migration plan & dry-run SQL β 7-step process, rollback safeguards (#67)
- π π Translation seed β en-GB baseline (~1,075 keys) done; 9 locales deferred post-launch (#71)
- β π Pre-release audit β security hardening, WCAG refinements, W3C compliance (20 files)
π v1.0.0-rc β Pre-Release Candidate after Phase 6
- Phase 7 β API & Analytics: REST API, OpenAPI/Swagger docs, API keys, analytics dashboard
- Phase 8 β LinksPage: renderer, templates, WYSIWYG editor, custom domains
- Phase 9 β Advanced Redirects: scheduled, device, geo, age gates
- Phase 10 β Advanced Authentication (SIGNula): 2FA/TOTP, social login, SSO, passkeys
- Phase 11 β Payments & Subscriptions (SIGNula): tiers, PayPal, Apple Pay, Google Pay, crypto
Go2My.Link/
βββ π¨ assets/BrandKit/ β Full brand kit: logos, icons, favicons, PWA icons, press kit
βββ π€ .claude/ β Claude AI context (project brief, plans, memory)
βββ π€ .openai/ β OpenAI context
βββ βοΈ .github/workflows/ β CI/CD (PHP lint, release, SFTP deploy)
βββ π docs/ β ARCHITECTURE, DATABASE, API, DEPLOYMENT
βββ π web/
β βββ βοΈ _functions/ β Shared PHP functions (13 files)
β βββ π¦ _includes/ β Shared templates + email templates
β βββ π¦ _libraries/ β Local fallback libraries (Bootstrap, jQuery, FA, Chart.js)
β βββ π _schemas/ β JSON Schema definitions (api, database, external)
β βββ ποΈ _sql/ β Schema, migrations, seeds, stored procedures
β βββ π Go2My.Link/ β Component A (Main Website + Admin Dashboard)
β β βββ public_html/ β go2my.link web root (+ img/ for logos)
β β βββ public_html_landing/ β "Coming Soon" landing page
β β βββ _admin/public_html/ β admin.go2my.link web root (+ img/ for logos)
β βββ π G2My.Link/ β Component B (Redirect Engine)
β β βββ public_html/ β g2my.link web root (+ img/ for logos)
β β βββ public_html_landing/ β "Coming Soon" landing page
β βββ π Lnks.page/ β Component C (LinksPage)
β βββ public_html/ β lnks.page web root (+ img/ for logos)
β βββ public_html_landing/ β "Coming Soon" landing page
βββ π CHANGELOG.md
βββ π PROJECT_STATUS.md
βββ ποΈ DEV_NOTES.md
βββ π README.md
- π PHP 8.4+ or 8.5+
- ποΈ MySQL 8.0+
- π₯οΈ Visual Studio Code (recommended) with FTP Sync extension
- π Git
-
Clone the repository:
git clone https://github.com/MWBMPartners/Go2My.Link.git
-
Copy the auth credentials template:
cp web/_auth_keys/auth_creds.php web/_auth_keys/auth_creds.local.php
-
Edit
web/_auth_keys/auth_creds.local.phpwith your database credentials. -
Import the database schema from
web/_sql/schema/. -
Run the seed scripts from
web/_sql/seeds/. -
Point your web server document roots to the appropriate
public_html/directories.
mainβ Production-ready code- Feature branches for development, merged via pull request
Releases are managed via GitHub Actions. Each component can be released independently:
- Go to Actions β "π Create Release" β "Run workflow"
- Select the component (A, B, C, Admin, or All)
- Enter the version number (e.g.,
0.5.0) - Optionally mark as pre-release and add notes
- The workflow will lint PHP, create a Git tag, and publish a GitHub Release
Tag format:
| Scope | Tag Example |
|---|---|
| Full platform | v0.5.0 |
| Component A (Main Website) | component-a/v0.5.0 |
| Component A (Admin Dashboard) | component-a-admin/v0.5.0 |
| Component B (Redirect Engine) | component-b/v0.5.0 |
| Component C (LinksPage) | component-c/v0.5.0 |
See DEV_NOTES.md for detailed release process documentation.
- π GitHub Project: Go2My.Link Development
- π Issues: 89 issues tracked with phase labels (
phase-0throughphase-11) - π Milestones: v0.1.0 (Scaffold) through v1.5.0 (Payments), with v1.0.0-rc pre-release marker
Proprietary β MWBM Partners Ltd. All rights reserved.
- π’ Organisation: github.com/MWBMPartners
- π Project Board: Go2My.Link Development
- π Changelog: CHANGELOG.md
- π Status: PROJECT_STATUS.md
- ποΈ Dev Notes: DEV_NOTES.md