One codebase. One core. Infinitely configurable. This guide describes how the Tino Healthcare Platform is engineered to serve multiple products and facility types from a single, shared foundation.
Tino is not a collection of separate applications. It is one powerful healthcare platform that uses product configuration, package selection, and module activation to present the right experience to each user.
// Tino Platform Architecture
Shared Core
├── Patient Engine (registration, records, visits)
├── Billing Engine (invoicing, payments, insurance)
├── User & Auth Engine (roles, permissions, sessions)
├── Reporting Engine (reports, analytics, exports)
├── Notification Engine (SMS, email, alerts)
└── Inventory Engine (stock, procurement, suppliers)
│
▼
Product Engine (TCM · TPM · TDM · TLM)
│
▼
Package Engine (Small HC · Hospital · Pharmacy Chain…)
│
▼
Module Activation (feature flags per org)
│
▼
Role-Based Dashboard (tailored per user role)Each product shares the same core but delivers a completely different user experience.
Full-featured outpatient and inpatient management for facilities of every size.
Available Packages
Database Config
-- Product record
INSERT INTO products (name, code)
VALUES ('Tino Clinic Manager', 'TCM');
-- Package records
INSERT INTO packages (product_id, name)
VALUES (product_id, 'Small Health Center');
INSERT INTO packages (product_id, name)
VALUES (product_id, 'Medium Health Center');
INSERT INTO packages (product_id, name)
VALUES (product_id, 'Hospital');
INSERT INTO packages (product_id, name)
VALUES (product_id, 'Integrated Health Center');Each tier builds on the previous. Upgrades activate new modules without touching existing data.
Upgrade Path
When upgrading: existing data is preserved · new modules are activated · navigation auto-updates · new dashboard widgets appear · permissions expand. When downgrading: restricted modules become inaccessible but data is safely retained for reactivation.
All product, package, and module configuration lives in the database — enabling Developer Portal changes to take effect instantly without code deploys.
// Example organization configuration
{
"organization": "Example Medical Centre",
"product": "tino_clinic_manager",
"package": "medium_health_center",
"enabled_modules": [
"patients",
"consultation",
"laboratory",
"pharmacy",
"admission",
"billing",
"inventory"
],
"feature_flags": {
"FEATURE_ADMISSION": true,
"FEATURE_BED_MANAGEMENT": true,
"FEATURE_DENTAL": false,
"FEATURE_RADIOLOGY": true,
"FEATURE_THEATRE": false
},
"branding": {
"primary_color": "#1B4F8A",
"facility_name": "Example Medical Centre",
"receipt_header": "Example Medical Centre · Kampala"
}
}The left sidebar adapts automatically to the organization's product and enabled modules. No hardcoded menus.
Small Health Center
Hospital
Pharmacy Manager
Navigation Resolution Logic
// Pseudocode — how navigation is built per session
function buildNavigation(user: User, org: Organization): NavItem[] {
const product = getProduct(org.product_id); // TCM, TPM, TDM, TLM
const pkg = getPackage(org.package_id); // small_hc, hospital, …
const modules = getEnabledModules(org.id); // per-org feature flags
const role = user.role; // doctor, nurse, admin, …
return NAV_TEMPLATES[product.code][pkg.code]
.filter(item => modules.includes(item.module_key))
.filter(item => ROLE_PERMISSIONS[role].includes(item.permission))
.map(item => ({ ...item, active: item.href === currentPath }));
}Every user sees a dashboard tailored to their role — not a generic overview. The dashboard engine renders only relevant widgets.
Dashboard Engine — Widget Resolution
// Dashboard configuration object
const dashboardConfig = {
organization_type: 'medium_health_center',
product: 'tino_clinic_manager',
enabled_modules: ['patients', 'lab', 'pharmacy', 'billing'],
// Resolved automatically by the engine:
widgets: [
...WIDGET_LIBRARY.financial.filter(w => isModuleEnabled(w.requires)),
...WIDGET_LIBRARY.clinical.filter(w => isModuleEnabled(w.requires)),
...WIDGET_LIBRARY.inventory.filter(w => isModuleEnabled(w.requires)),
].filter(w => ROLE_CAN_SEE[currentUserRole].includes(w.id)),
};The central control center for managing all Tino installations, products, packages, and subscriptions.
Create Organization
Register a new clinic or healthcare facility
Select Product
Choose TCM, TPM, TDM, TLM or future products
Select Package
Assign a facility-type package to the org
Activate Modules
Toggle feature flags per organization
Manage Licenses
Issue, renew, or revoke subscriptions
User Management
Manage cross-org users and roles
System Analytics
Monitor usage, growth, and revenue
Upgrade / Downgrade
Change package without data loss
Branding Control
Logo, colors, receipt headers per facility
White-label Config
Enterprise-level rebrand support
New Organization Setup Flow
Select Product
TCM · TPM · TDM · TLM
Select Package
Facility type
Enable Modules
Feature flags
Subscription Plan
Pricing tier
User Roles
Staff setup
Dashboard Template
Auto-configured
Custom Branding
Logo & colors
Once this flow is complete, the system automatically provisions: navigation menu · dashboard widgets · available modules · report templates · quick actions · permission matrix · notification rules · analytics KPIs.
Every module has a feature flag. Flags are stored in the database and evaluated at runtime — no code changes or redeployments needed when activating or deactivating a feature for a specific organization.
All three checks must pass → module is visible and accessible.
// Feature flag resolution
async function canAccess(
orgId: string,
userId: string,
moduleCode: string,
): Promise<boolean> {
const [orgModule, rolePermission, subscription] = await Promise.all([
db.package_modules.findOne({ org_id: orgId, module: moduleCode }),
db.role_permissions.findOne({ user_id: userId, module: moduleCode }),
db.subscriptions.check({ org_id: orgId, feature: moduleCode }),
]);
return (
orgModule?.enabled === true &&
rolePermission?.granted === true &&
subscription?.active === true
);
}Configurable per Organization
// Branding config stored per organization
{
"branding": {
"facility_name": "City General Clinic",
"logo_url": "https://cdn.example.com/logo.png",
"primary_color": "#1B6F4A",
"address": "Plot 14, Kampala Road, Kampala",
"phone": "+256 776 000 000",
"email": "info@cityclinic.ug",
"receipt_header": "City General Clinic",
"report_footer": "Powered by Tino",
"white_label": false
}
}New products plug into the same core. Zero architectural changes required.
Tino Maternity Manager
TMMTino Eye Care Manager
TEMTino Specialist Clinic
TSMTino Rehabilitation
TRM// Adding a new product = new product record + new package records + new module configs + new dashboard template
Whether you're a developer looking to contribute, an integrator, or a healthcare facility exploring Tino — reach out to start the conversation.
Access Developer Portal