Self-hosting migration kit
Copies data and staff accounts with password hashes, clears seed rows first and prints a row-count audit for every table.
Scuba World Diving ran every dive through one Excel workbook. We fitted Manifest, our dive-centre platform, to the way they work: their logbook, levies, commissions, PADI courses and gear, in their colours, on their own server.



Every dive at Scuba World was recorded in one Excel workbook. Its twelve sheets, some of them seventy columns wide, held the daily logbook, income, expenses, clients who still owed money, supplier invoices, gear stock, diver statistics, annual payments, a month-end close and a balance sheet.
sheets in a single workbook
columns on the widest sheets
the same diver typed: logbook, income, diver statistics, month-end
roles or audit trail: anyone with the file could change anything
Money owed was spread across tabs that had to be reconciled by hand, and the manager only saw how a day went once someone had updated the sheet. The business rules were the real complexity:
Manifest already handles the day of a dive centre. The work was making it Scuba World’s: their rules, their vocabulary, their data and their way of running the day.
We went through the workbook one sheet at a time. Every column became a field, every formula a business rule and every tab a module, so nothing the team relied on was lost.
26 tables and 4 live reporting views replace the MONTHLY, diver-statistics and daily-summary tabs. 53 row-level security policies give the manager, reception and instructors exactly what each role needs.
Their dive sites with depths and lagoon category, commission rates and 76 lines of gear from their STOCK GEAR sheet were loaded before the first login.
The daily logbook is the source. Income, invoices, balances, diver statistics and the monthly P&L are all calculated from it, never retyped.
The manager’s first screen shows the day itself: revenue with the MSDA levy kept separate, divers by activity, and every boat on a 06:00–21:00 timeline, with a seat that fills for each diver logged.
1Revenue today, with the MSDA levy on its own line2Each boat on the day’s timeline, a seat per diver3Upcoming bookings, grouped by day4Open balances, chased from the first screenPlanning is for instructors: morning, afternoon and night sessions with site, times, skipper, divers and each instructor’s workload. Finance is for the office: a live P&L for the same day, gear checked out against stock, and one click to turn the day’s rows into income records.
1Sessions on the day’s timeline2Workload per instructor3Each dive: site, times, instructor and divers4Planning and Finance, one click apart

A month calendar runs from pending to confirmed to completed. Walk-ins can be booked before a client record exists, and a day’s bookings import straight into that day’s logbook.
1Today, highlighted2Walk-ins booked before a client record exists3Pending, confirmed, completed, cancelled, no showIncome is split by activity and payment method (cash, card or POS, bank transfer) with paid, partial and due states. Invoices are numbered SWD-YYYY-#### and generated as PDFs on the server, for a single client or as a daily batch summary.


The monthly P&L, diver statistics, annual expenses by category and month, and a balance overview of what clients owe, what is owed to suppliers and outstanding course fees. Expenses use 30 categories in 8 groups that mirror the client’s own chart of accounts.



Each course shows progress module by module (confined water, open-water dives, knowledge reviews) alongside payments, PADI fees and certification dates.
Nationality, hotel and room, PADI qualification and number, in-house and minor flags. Returning divers are found as you type, with their full dive history and a running balance.
Kit is counted by size, condition and availability. Service dates are tracked, and anything overdue or due within 30 days is flagged.
1Service due: overdue or within 30 days2Available units against stock, by size3An overdue service, flagged in red
Every screen works at phone width, so instructors log divers and check the day from the dock.




Scuba World’s own logo heads every screen, and their sign-in opens on a slow aerial loop of a Mauritian lagoon that we produced for them. In October we refined the interface for their team: calmer, denser and easier to scan in a bright reception.

Nine accent hues became ink and greys, one lagoon accent, and red only for real problems such as overdue, unpaid or a loss.
Compact type, tabular figures for every amount, hairline borders instead of heavy shadows, and a ⌘K menu to jump anywhere.
Light suits a bright reception desk, and a separately tuned dark theme is one click away.

In July we moved the platform off a free cloud tier onto the client’s own server: the same database platform, self-hosted, with a custom domain, HTTPS and automatic deploys. Staff logins came across with their password hashes intact, so nobody had to reset anything.
The brief was the system. These came with it, so the client can run, move and extend it without depending on us.
Copies data and staff accounts with password hashes, clears seed rows first and prints a row-count audit for every table.
A 1,420-line script rebuilds the schema, security policies, views and reference data on any Postgres server.
Four phases from infrastructure to post-cutover checks. Rolling back means changing one URL.
One source produces four Word specifications: product requirements, UX and UI, technical design and functional.
Tokens, the colour budget, type scale and components, so the next screen stays consistent.
An aerial lagoon still and a seamless video loop, made with AI tools and optimised to about 3 MB each.
A multi-stage build that runs as a non-root user, with automatic deploys on merge.
Dive sites, commission rates and 76 gear lines from their STOCK GEAR sheet, loaded ahead of the first login.
An agency would typically quote this scope, with 30 screens, role-based security, PDF invoicing, financial reporting, a data migration and a design system, as a multi-month project.
each dive typed once, then counted everywhere it’s needed
daily admin target, down from about two hours
roles, each seeing only what it needs
password resets when they moved to their own server
screens, one way of working across all of them
client-owned code, data and infrastructure
Our services:All services | Custom software | E-commerce | Websites and branding | Business systems | Mobile applications | AI and automation | Technology consulting | Meta Field | Manifest | Work
Meta Mind Lab is a software and digital studio based in Mauritius. We build custom software and web applications with Next.js, TypeScript and PostgreSQL, mobile apps for iOS and Android with React Native, and online stores on Shopify and WooCommerce, from the catalogue and payments to shipping and supplier data. For brands, we design websites and visual identities and support them with SEO and Google Ads. We connect business systems so information stops being copied by hand, and bring AI and automation into everyday work, with people in control. Need direction first? Technology consulting helps you choose the right platform. For field service teams, Meta Field handles scheduling, signed reports, invoicing and accounting, and for dive centres, Manifest runs the logbook, bookings, payments and PADI courses. See how it comes together in our case studies and product imagery and motion.
Branchen:Hotellerie und Tourismus | Handel und E-Commerce | Lebensmittel und Getränke | Beauty und Kosmetik | Dienstleistungen | Automobil | Logistik | Immobilien | Gesundheitswesen | Ingenieurwesen | Landwirtschaft | Pferdesport