glanzlicht / GastroOS
Verified secure showcase
500 Files 1 MB Public size 31 Redacted TypeScript · SQL · JSON · Markdown · DOCKERIGNORE · EXAMPLE

Project overview

GastroOS is a verified code showcase with 500 visible project entries across 3 top-level modules. The primary detected language is TypeScript; protected files remain visible in the structure while their contents stay private.

README

GastravaOS

GastravaOS is a modular Hospitality Operational Intelligence Platform.

The technical repository name remains GastroOS for compatibility. The product is presented publicly as GastravaOS.

Product preview

GastravaOS operations dashboard

GastravaOS is designed for hospitality operations ranging from small venues to larger multi-location organizations. The platform combines operational workflows, resilient data handling and role-specific user experiences without exposing internal complexity to operators.

What this repository demonstrates

This repository is presented as a technical portfolio showcase, not as a complete product blueprint.

It demonstrates work across:

  • backend engineering with Node.js, TypeScript, NestJS and REST/OpenAPI;
  • PostgreSQL data modeling, explicit SQL migrations and transactional consistency;
  • Flutter application architecture with Riverpod, go_router, Drift/SQLite and Dio;
  • operational workflows across hospitality domains;
  • offline-capable client foundations and synchronization patterns;
  • real-time state reconciliation and event-driven integration patterns;
  • integrations for storage, payments, fiscal/accounting systems and external platforms;
  • Docker-based development, CI, observability and runtime verification;
  • tenant-aware security, audit-oriented design and permission boundaries;
  • applied AI around deterministic domain data and human-controlled actions.

Technology stack

AreaTechnology
BackendNode.js 24 LTS, TypeScript, NestJS 11
APIREST / OpenAPI
DatabasePostgreSQL 18, Drizzle ORM, explicit SQL migrations
FrontendFlutter, Riverpod, go_router
Local dataDrift / SQLite
NetworkingDio, json_serializable
InfrastructureDocker Compose, S3-compatible storage
ArchitectureModular monolith, transactional outbox
QualityAutomated tests, CI, observability and runtime verification

Engineering approach

The codebase is organized around clear boundaries and reusable platform capabilities rather than one large feature layer.

Recurring engineering principles include:

  • deterministic and auditable domain state;
  • separation of operational truth from presentation;
  • role- and context-specific interfaces;
  • resilience under intermittent connectivity;
  • explicit integration adapters;
  • composable capabilities instead of duplicated vertical implementations;
  • controlled exposure of sensitive business, security and product logic.

Portfolio boundary

The public showcase intentionally omits detailed roadmaps, ADRs, security internals, commercial logic, AI prompts, operational playbooks and reconstructable product strategy.

Those materials remain in the private repository. The public view is optimized so technical reviewers can evaluate engineering breadth and implementation quality without receiving a reconstruction guide for the product.

Local development

The repository uses a versioned pnpm dependency graph.

corepack enable
pnpm install --frozen-lockfile

Project-specific runtime and verification details remain in the private engineering documentation.

Status

GastravaOS is under active development. The repository contains a broad implementation foundation and ongoing product work rather than a finished commercial release.

The public showcase focuses on engineering capability, architecture quality and implementation breadth while deliberately omitting core IP.

apps/backend/src/infrastructure/database/migrations/0050_sprint_x_completion.sqlSQL
-- Sprint X completion — auth revocation, step-up evidence, worker health and readiness evidence.
create table if not exists user_auth_security_state (
user_account_id uuid primary key references user_accounts(id) on delete cascade,
revoked_before timestamptz,
require_step_up_after timestamptz,
reason text,
updated_by_user_id uuid references user_accounts(id) on delete set null,
updated_at timestamptz not null default now()
);
create table if not exists revoked_auth_sessions (
id uuid primary key default gen_random_uuid(),
user_account_id uuid not null references user_accounts(id) on delete cascade,
session_identifier_hash text not null,
reason text not null,
revoked_by_user_id uuid references user_accounts(id) on delete set null,
revoked_at timestamptz not null default now(),
expires_at timestamptz,
constraint revoked_auth_session_hash_unique unique(session_identifier_hash)
);
create index if not exists idx_revoked_auth_sessions_user
on revoked_auth_sessions(user_account_id,revoked_at desc);
create table if not exists privileged_action_events (
id uuid primary key default gen_random_uuid(),
organization_id uuid references organizations(id) on delete set null,
user_account_id uuid not null references user_accounts(id) on delete restrict,
action_key text not null,
auth_time timestamptz,
acr text,
amr_json jsonb not null default '[]'::jsonb,
correlation_id text,
result text not null,
created_at timestamptz not null default now(),
constraint privileged_action_result_check check(result in ('allowed','denied'))
);
create index if not exists idx_privileged_actions_user
on privileged_action_events(user_account_id,created_at desc);
create table if not exists worker_heartbeats (
worker_key text primary key,
status text not null,
last_started_at timestamptz,
last_success_at timestamptz,
last_failure_at timestamptz,
consecutive_failures integer not null default 0,
last_duration_ms integer,
last_error_code text,
details_safe_json jsonb not null default '{}'::jsonb,
updated_at timestamptz not null default now(),
constraint worker_heartbeat_status_check check(status in ('idle','running','healthy','degraded','failed'))
);
alter table outbox_events
add column if not exists dead_lettered_at timestamptz,
add column if not exists next_attempt_at timestamptz;
create index if not exists idx_outbox_retryable
on outbox_events(coalesce(next_attempt_at,available_at),occurred_at)
where processed_at is null and dead_lettered_at is null;
create table if not exists production_acceptance_evidence (
id uuid primary key default gen_random_uuid(),
check_key text not null,
environment text not null,
status text not null,
evidence_type text not null,
evidence_reference text,
details_safe_json jsonb not null default '{}'::jsonb,
recorded_by_user_id uuid references user_accounts(id) on delete set null,
recorded_at timestamptz not null default now(),
constraint production_acceptance_evidence_status_check check(status in ('pass','warn','fail')),
constraint production_acceptance_evidence_type_check check(
evidence_type in ('automated_test','manual_test','runbook','staging_log','trace','restore_drill','security_review','performance_run','operational_signoff')
)
);
create index if not exists idx_production_acceptance_evidence_check
on production_acceptance_evidence(environment,check_key,recorded_at desc);
insert into permissions(permission_key,description) values
('security.sessions.manage','Revoke user authentication sessions'),
('security.events.read','Read security event history'),
('production.readiness.read','Read pilot/production readiness'),
('production.readiness.manage','Record production acceptance evidence')
on conflict(permission_key) do nothing;

Architecture

High-level modules detected from the verified public snapshot. Protected implementation details are intentionally omitted.

appsmodule
.vscodemodule
.githubmodule

Technology stack

TypeScriptSQLMarkdownJSONGITIGNOREDOCKERIGNORENode.js / JavaScript ecosystem
TypeScript68.8%
SQL20.0%
Markdown10.9%
JSON0.3%
GITIGNORE0.1%
DOCKERIGNORE0.0%
CJS0.0%
MJS0.0%