Custom software development

Software built for your business

We study, design, build and run it around how your business works.

-- Membership check lives in the private schema, never exposed through the public API
create or replace function private.is_tenant_member(p_tenant_id uuid)
returns boolean language sql security definer set search_path = public stable as $$
select exists (
select 1 from public.members m
where m.tenant_id = p_tenant_id and m.user_id = auth.uid()
);
$$;
-- Read: any member of the tenant. Write: owners and admins only
create policy profiles_select on public.profiles
for select to authenticated
using (private.is_tenant_member(tenant_id));
create policy profiles_write on public.profiles
for all to authenticated
using (private.is_tenant_editor(tenant_id))
with check (private.is_tenant_editor(tenant_id));
Click Star CDP · PostgreSQLexcerpt, trimmed
100%
of source code and data handed over to you
3
separate environments: development, staging, production
2 weeks
per sprint, each ending with working software
Daily
backups, with tested restores
Real source code

This is how we write code

4 excerpts from Click Star’s own product repositories, trimmed for length with the logic untouched. Each says why it exists.

migrations/0002_harden_rls_helpers.sqlExcerpt from: Click Star CDP · PostgreSQL
-- Membership check lives in the private schema, never exposed through the public API
create or replace function private.is_tenant_member(p_tenant_id uuid)
returns boolean language sql security definer set search_path = public stable as $$
select exists (
select 1 from public.members m
where m.tenant_id = p_tenant_id and m.user_id = auth.uid()
);
$$;
-- Read: any member of the tenant. Write: owners and admins only
create policy profiles_select on public.profiles
for select to authenticated
using (private.is_tenant_member(tenant_id));
create policy profiles_write on public.profiles
for all to authenticated
using (private.is_tenant_editor(tenant_id))
with check (private.is_tenant_editor(tenant_id));

This guarantees

One tenant can never read another’s data, even if an application bug slips through. The block sits in the database.

48
numbered SQL migrations in the CDP repository
246
permission tests for the ad-operations system
7
test suites, run on a simulated database
187
commits in the CDP repository, each a reversible change

Measured from the repositories on 18 Oct 2026. Tests never touch real data.

One request, 6 checkpoints

The code above lives at these checkpoints. The order is fixed: a later check never replaces an earlier one.

Click StarREQUEST PATH6 checkpoints, fixed orderREQUEST FROM THE BROWSER01EdgeTLS · rate-limitblocks:brute force,abusive traffic02SessionverifyToken()blocks:forged or expiredtokens03RolerequireRole()blocks:privilegeescalation04Inputschema.parse()blocks:bad types,injection05PolicyRLS policyblocks:cross-branch reads06Auditaudit.log()blocks:tampering,repudiationTRUST SCOPEChecked on the server, nothing from the client is trustedEnforced in the database, even if application code is wrong

Swipe sideways to see the full diagram

Architecture

A reference architecture for every project

A shared starting point, then tailored to your workflows. AI models and external systems are called from the server only, never from the browser.

Click StarREFERENCE ARCHITECTUREdefault deployment modelCLIENTSEDGEAPPLICATIONDATABrowserweb · PWAPhonehome-screen appPartner systemsREST · webhookCDN + WAFTLS 1.2+Rate limitingblocks brute forceSession authJWT · admin 2FAApplication serverNext.js · Node.jsRBACzodauditBackground jobscron · queue · workflowAI moduleserver-side calls onlyPostgreSQLRow Level Securityper tenantper branchaudit_logappend-only · no update/deleteFiles and backupsdaily backup · restoreTLSSQL+RLSOUTBOUND (VIA SERVER ONLY)CRM · accounting · inventoryZalo · Email · SMSClaude · GPT · GeminiENVIRONMENTSdevstagingproduction

Swipe sideways to see the full diagram

01

The database is the last gate

Access is bound by Row Level Security, so an application bug cannot leak data.

02

Every change leaves a trace

An append-only log records who did what and when. Nobody can edit or delete it, admins included.

03

Separate environments from day one

Development, staging and production are three separate environments. Real data never appears in the first two.

Technology

Mainstream, strongly typed technology

We choose technology with a large community and a long lifespan, so the system stays easy to staff and maintain for years.

FrontendNext.js · React · TypeScript
BackendNode.js · TypeScript · REST / Webhook
DatabasePostgreSQL · Row Level Security
HostingVercel
AutomationClick Star Automation · Cron · Queue
AI (when needed)OpenAI · Claude · Gemini
When custom software makes sense

Off-the-shelf tools no longer fit the way you operate

The first conversation may well conclude that you don't need custom software yet. If an existing tool is enough, we will say so.

  1. 01

    Data is scattered across spreadsheets and chat groups

    Reports are compiled by hand and figures differ between teams.

  2. 02

    Your current software lacks your specific workflows

    Teams work around the system, or pay for features nobody uses.

  3. 03

    Systems don't talk to each other

    CRM, accounting, inventory and the website each hold their own data, so staff re-enter it.

  4. 04

    You need tighter security and access control

    You need fine-grained roles per branch and a full record of who viewed or changed what.

What we build

The systems we design and operate

Internal operations systems

Multi-level approvals, orders, inventory, HR and task flows that match your org structure.

CRM and client portals

Customer management built on your own sales pipeline, plus portals where clients and resellers serve themselves.

Reporting and dashboards

Data from many sources in one place, with reports that refresh themselves and show each manager only their scope.

Mobile-ready web apps

Works on desktop and phone, and installs to the home screen like an app.

System integration

API connections to the tools you already use, with automatic sync instead of manual entry.

Applied AI in workflows

Document extraction, call analysis and internal search assistants. Your data is not used to train models.

Applied AI

Premium AI models, tightly controlled

We use the leading models from Anthropic (Claude), OpenAI (GPT) and Google (Gemini), chosen per task. The model is one step in a verified workflow, not a black box wired straight into your data.

Anthropic · ClaudeOpenAI · GPTGoogle · Gemini
Click StarAI PROCESSING PATHevery call goes via the serverDocuments, contractsCalls, messagesStaff questions1. Sanitizemask sensitive fields2. Retrieveapproved knowledgefiltered by asker role3. Route to modelHARD TASKSClaude · GPT · GeminiROUTINE TASKSfast, low-cost modelfallback on provider outage4. Verifyschemacites sourcesconfidenceAuto-write to the systemabove confidence thresholdHuman reviewbelow threshold or sensitiveSystem of recordPostgreSQL · audit_logLOGGED PER CALLprompt@ver · token · costmodel · reviewer · latency

Swipe sideways to see the full diagram

The right model for the job

Reasoning-heavy work such as reading contracts or analysing calls uses a top-tier model. Repetitive work such as classification uses a fast model to keep cost down. A fallback covers provider outages.

Answers only from approved data

Retrieval from an approved knowledge base, filtered by the asker’s permissions, with cited sources. Unanswered questions are logged for follow-up instead of letting the model guess.

Structured, verified output

Results follow a fixed schema and are validated before they touch your system. Below a confidence threshold, or when data is sensitive, a person reviews it.

Your data stays protected

Sensitive fields are masked before sending. API keys live on the server only. Your data is not used to train models.

Cost and quality you can measure

Every call logs the prompt version, tokens, cost and reviewer. Monthly budgets are set, and quality is compared before any model change.

Already built, not a concept

  • Website assistant answering from an approved knowledge base and sending leads to the CRM
  • Call analysis: transcription, scoring, writing straight into the CRM
See Speech Insight AI
Selected work

Some of the systems we have built

Client names are withheld for confidentiality. The images are redrawn illustrations with sample data, not screenshots of client systems.

Education · multi-campus

Ad performance command center

Problem

Ad budgets were split across many campuses, each reporting in its own spreadsheet. Management often learned a campus was underperforming only at month end.

What we built

The system pulls ad data on a schedule, joins it with leads and enrolments, compares campuses side by side and puts the decisions that need attention first.

  • Automatic Meta Ads cost sync, no manual entry
  • Rule-based alerts that open an issue with a named owner
  • Access control enforced in the database, with its own test suite

Next.js · PostgreSQL · Meta Marketing API

The team

10+ years building systems for businesses

Click Star’s engineers have worked with 100+ Vietnamese businesses across education, healthcare, retail, e-commerce and premium services.

10+
years in Marketing, CRM and process systems
100+
businesses served
5
sectors: education, healthcare, retail, e-commerce, premium services
01

Software engineers

Write and maintain application code, integrations and performance.

02

Data and security engineers

Design data models, Row Level Security and access tests.

03

AI engineers

Select models, build retrieval and measure quality and cost.

04

Product designers

Design workflows and clickable prototypes before any code is written.

05

QA

Functional, performance and permission testing, then acceptance with real users.

06

Operations

Monitoring, backups, restore drills and incident response after handover.

Engineering habits we do not skip

  • Every change is reviewed by a second engineer before merge
  • Automated checks before staging: types, lint, tests and a full build
  • Permission tests run on a simulated database, never on real data
  • Major architecture decisions are written down, so whoever takes over knows why
Click StarRELEASE PIPELINEevery change passes all 5 steps01Feature branchgit · commit02Code reviewsecond engineer03Automated checkstypecheck · tests04Staginglink for sign-off05Productioncontrolledyour sign-offroll back in minutes

Swipe sideways to see the full diagram

Security

Security designed in from the start, not patched on later

These controls are the default on every project, not an upgrade. The exact scope is written into the handover documents so your own team can verify it.

Data protection

  • Encryption in transit (TLS) and at rest
  • Tenant and branch isolation enforced in the database
  • Sensitive fields masked on screen and in exports

Access control

  • Role-based permissions, checked on the server
  • Two-factor authentication for admin accounts
  • Login rate limiting and session expiry

Audit trail

  • Who did what, when, to which record
  • Append-only logs that cannot be edited or deleted
  • Exportable for reconciliation or audits

Secure code

  • Every change reviewed by a second engineer before merge
  • Tested against the OWASP Top 10 before handover
  • Secrets never stored in the codebase

Infrastructure

  • Staging fully separated from production
  • Automated backups with point-in-time recovery
  • Hosting in Singapore or Vietnam as required

Compliance

  • Designed around Vietnam's Decree 13/2023 on personal data protection
  • NDA signed before detailed discussions
  • Support with data processing impact assessments
OWASP Top 10Row Level SecurityTLS 1.2+RBACDecree 13/2023/ND-CP
Operations

The system has to keep running after handover

Most of a system's lifetime cost sits in operation. We plan for it from the design stage.

Monitoring and alerts

Uptime, errors and response times are tracked, so engineers are alerted before users have to report a problem.

Safe releases

Each change ships to staging first, you approve it through a link, and only then does it reach production. Rolling back takes minutes.

Backup and recovery

Automatic daily backups, with restores rehearsed regularly so we know they work when needed.

Runbooks

Architecture docs, incident procedures and runbooks are handed over, so your team or another vendor can take over.

Incident response

Applies during warranty and on operations plans

SeverityExampleResponse
P1System down, data exposurewithin 1 hour
P2A core feature is unavailablewithin 4 hours
P3Minor issue with a workaround1 business day

Monthly operations report

  • Uptime and incidents resolved
  • Security patches and dependency updates applied
  • Backup status and the latest restore test
  • Recommendations on performance and hosting cost
Process

From understanding the need to a system running in production

Every phase ends with a sign-off. The next phase doesn't start until the previous one is approved.

  1. 01

    Discovery

    Sessions with leadership and real users to map current workflows.

    Scope and quote approved
  2. 02

    Solution design

    Architecture, data model, permissions and a clickable prototype.

    Design approved
  3. 03

    Iterative build

    2-week sprints, each closing with a demo on staging.

    Approved every sprint
  4. 04

    Testing and security review

    Functional, performance and permission testing; user acceptance by real users.

    Acceptance signed
  5. 05

    Launch and handover

    Go-live, legacy data migration and user training.

    Full handover
  6. 06

    Operate and maintain

    Monitoring, security patching and new features as needs evolve.

    Monthly reporting
PhaseWhat you receiveWhat we need from youDuration
DiscoveryRequirements, scope and a fixed quote2–3 working sessions, current forms and files1–2 weeks
DesignArchitecture diagram, permission matrix, prototypeFeedback on the prototype2–3 weeks
BuildUpdated staging build each sprint, progress reportsAttend demos, give feedback within the sprintby scope
TestingTest report and security reviewKey users for acceptance testing1–2 weeks
HandoverSource code, documentation, admin access, trainingLegacy data to migrate, training scheduleabout 1 week
Ownership

You fully own the system

Source code

The repository is in your name, with its full change history.

Infrastructure

Hosting, database and domain accounts belong to you.

Documentation

Architecture, API, data model, runbooks and incident procedures.

No lock-in

Mainstream technology that your team or another vendor can take over.

Engagement models

Pick the model that fits where you are

Fixed-scope projectA system with a clear scopeDedicated teamA product in continuous developmentOperations and maintenanceAn existing system that must run reliably
PricingFixed quote after discoveryMonthly, by team sizeMonthly, by response commitment
Best whenNeeds are known and the budget must be fixedRequirements evolve often and speed mattersThe system is critical and must not go down
IncludesAll 6 phases, warranty after acceptanceEngineering, design, QA, regular reportingMonitoring, patching, backups, monthly report

Fixed-scope project

A system with a clear scope

Pricing
Fixed quote after discovery
Best when
Needs are known and the budget must be fixed
Includes
All 6 phases, warranty after acceptance

Dedicated team

A product in continuous development

Pricing
Monthly, by team size
Best when
Requirements evolve often and speed matters
Includes
Engineering, design, QA, regular reporting

Operations and maintenance

An existing system that must run reliably

Pricing
Monthly, by response commitment
Best when
The system is critical and must not go down
Includes
Monitoring, patching, backups, monthly report
FAQ

Questions businesses usually ask

A first version with the core features usually takes about 6 to 10 weeks, depending on scope. The process is discovery 1 to 2 weeks, design 2 to 3 weeks, build in 2-week sprints (duration depends on scope), testing 1 to 2 weeks and handover about 1 week. Every change goes to a test environment for you to approve before it reaches the live system.

Talk to us about the system you need

The first conversation takes 60 minutes, free of charge. Afterwards you receive an initial view on scope, risks and the right way to proceed.

hotline 0383 406 735 · [email protected]

Chat on ZaloMessage us for adviceCall hotline0383 406 735