BASE44DEVS

SOLUTION · INTERNAL TOOLS

Base44 for Internal Tools: Ops Dashboards, Admin UIs, and SSO Caveats

Base44 is a strong fit for internal tools. Ops dashboards, admin consoles, and BI-light reporting apps map well to its strengths — fast iteration, modest concurrency, polling-acceptable real-time. The two cautions are SSO bypass risk from the 2025 disclosures and the absence of a built-in audit log, both fixable in a few hours. For most internal tools under 500 employees, Base44 ships faster and runs cheaper than Retool or a custom Next.js build.

Last verified
2026-05-01
Industry
Internal Tools
Use cases
7

Is Base44 right for internal tools?

Yes. Internal tools are one of Base44's strongest fits in 2026. The vertical aligns with everything Base44 does well (fast scaffold, custom workflow flexibility, modest concurrency) while avoiding most of what Base44 does poorly (no real-time, weak SEO, App Store rejection, public-facing security pressure).

The two real cautions for internal tools are: (1) the SSO bypass risk demonstrated in the 2025 Wiz disclosure means you cannot rely solely on Base44's native auth for anything sensitive, and (2) the absence of a built-in audit log means you must build one if you have any compliance posture at all. Both are 6–10 hours of additional hardening work. After that, internal tools on Base44 ship fast and run reliably.

What you can build

Internal tool shapes that work well on Base44:

  • Ops dashboards — support queues, billing reconciliation, fraud review, content moderation. CRUD-heavy, role-based, low concurrency. Base44's wheelhouse.
  • Admin consoles — user management, feature-flag UIs, configuration editors. Small data volume, controlled user set.
  • Approval workflows — expense reports, time-off requests, contract approvals, hiring pipeline. Forms, states, role-based routing, scheduled reminders.
  • BI-light dashboards — read-only views over imported data, scheduled email digests, simple filtering. Pair with backend functions that pull from your warehouse.
  • Customer service backends — case routing, response templates, internal notes, escalation tracking. The custom workflow is exactly what off-the-shelf tools (Zendesk, Intercom) struggle with.
  • Internal directory and HR tools — employee profiles, team rosters, org charts, simple onboarding/offboarding workflows.
  • Vendor management — vendor onboarding, contract tracking, payment scheduling, risk reviews.

What does not fit:

  • Real-time-collaboration tools — internal chat, live document editing. No WebSocket.
  • Tools requiring SOC 2 at the platform layer — your audit will not get a satisfactory answer about Base44's customer-app posture.
  • Tools that must integrate with 30+ databases — Retool's connector library is materially deeper.
  • Tools that need fine-grained sharing permissions on individual records — you can build it, but it gets fiddly.

Critical patterns for internal tools

1. Auth: layer Auth0 or Clerk on top

Do not rely on Base44's native auth alone for any internal tool that touches sensitive data. The pattern that works:

User clicks login
  -> Redirect to Auth0 (or Clerk) for SAML / OIDC SSO
  -> SSO completes, Auth0 redirects back with a JWT
  -> Base44 backend function 'exchange-token' validates Auth0 JWT
     -> Looks up or creates a Base44 user
     -> Returns Base44 session token
  -> Frontend stores Base44 session token, proceeds normally

This gets you real SSO (Okta, Azure AD, Google Workspace), MFA enforcement, session timeout, audit on auth events. Auth0 starts at $25/month for 1,000 MAU.

2. RLS: roles table + explicit rules everywhere

The pattern:

users {
  id, email, name,
  role: 'admin' | 'manager' | 'agent' | 'viewer',
  team_id (FK),
  is_active: boolean,
  last_login_at,
}

teams {
  id, name, parent_team_id (FK, nullable),
}

// On every sensitive collection:
// READ:  request.user.role IN ('admin', 'manager') 
//        OR (request.user.role == 'agent' AND row.team_id == request.user.team_id)
// WRITE: request.user.role IN ('admin', 'manager')
//        OR (request.user.role == 'agent' AND row.assigned_to == request.user.id)

Audit every collection's rule on every schema change. The AI agent will generate code that calls backend functions with admin scope, bypassing RLS. Watch for that pattern in code review.

3. Audit log: build it as a first-class collection

There is no native audit log. Build one:

audit_events {
  id, actor_user_id, actor_role,
  event_type: 'login' | 'logout' | 'view' | 'create' | 'update' | 'delete' | 'export',
  entity_type: string,
  entity_id: string,
  before: jsonb,    // for updates and deletes
  after: jsonb,     // for creates and updates
  ip_address: string,
  user_agent: string,
  reason: string,   // optional, for sensitive actions
  created_at: timestamp,
}

Write to it from every backend function that touches sensitive data. Retain for at least 1 year, longer if your compliance posture demands it. Build a simple admin UI that lets a security reviewer search and export audit events.

4. Export controls

Every internal tool eventually has someone trying to export the customer list. Three controls:

// Backend function: export-data.ts
async function handler(req) {
  const { user, table, filters } = await authenticate(req);
  
  // 1. Role check
  if (!canExport(user.role, table)) {
    await audit(user.id, 'export_denied', table, { filters });
    throw new Error('FORBIDDEN');
  }
  
  // 2. Audit before export
  await audit(user.id, 'export_started', table, { filters });
  
  // 3. Watermark
  const data = await db.from(table).select('*').filter(filters);
  const watermarked = {
    exported_by: user.email,
    exported_at: new Date().toISOString(),
    export_id: generateUUID(),
    rows: data,
  };
  
  // 4. Audit after
  await audit(user.id, 'export_completed', table, {
    row_count: data.length,
    export_id: watermarked.export_id,
  });
  
  return watermarked;
}

If a leaked CSV shows up later, the watermark tells you who exported it.

5. Notifications: external email, not Base44 native

Internal tools generate a lot of email — assignment notifications, approval requests, daily digests. Base44's native email is unreliable. Use Postmark or Resend, route through a single backend function with templates, queue for retry.

Limitations and gotchas

LimitationInternal-tools impactMitigation
RLS defaults openAll users see all data unless rules addedLock down on day one, audit every change
No native SSOCannot integrate Okta / Azure ADAuth0 / Clerk proxy pattern
2025 SSO bypass riskEven configured SSO leakedSSO bypass fix
No native audit logCompliance gapBuild audit_events collection
AI agent bypasses RLSBackend functions run as adminManual code review for from() calls
Webhooks need active usersSlack notifications miss after-hours triggersExternal webhook proxy
No native Postgres connectionCannot query existing warehouseDeno-pg from backend function
Editor hangs on large projectsMaintenance gets painful past 30 componentsPerformance editor fix
AI regression on tested workflowsApproval flows break unpromptedSnapshot-and-scope workflow
No fine-grained record sharing"Share this case with John" is awkwardBuild a record_shares collection
Limited bulk operationsMass-update workflows break at scalePagination + queue

The two that bite most: relying on default RLS (data leak waiting to happen) and skipping the audit log (compliance review will fail).

Real-world example architecture

A typical support-ops dashboard for a 50-person company:

Collections:
- users               (employees, role, team_id, is_active)
- teams               (support, billing, fraud, etc.)
- customers           (synced from production CRM via backend function)
- tickets             (case_id, customer_id, status, assigned_to, priority)
- ticket_events       (ticket_id, event_type, actor_user_id, body, ts)
- macros              (saved response templates)
- exports             (export_id, user_id, table, filters, row_count, ts)
- audit_events        (every meaningful action)

External services:
- Auth0                  -> SSO with Google Workspace / Okta
- Cloudflare Worker      -> Slack webhook reliability for ticket alerts
- Postmark               -> notification email
- Sentry                 -> error tracking
- Postgres (read-only)   -> sync customers from production
- Slack                  -> alerts on high-priority tickets

Key flows:
- Login              -> Auth0 SSO -> Base44 session
- New ticket arrives -> webhook from Zendesk/Intercom -> create ticket row
                                                      -> auto-assign by routing rules
                                                      -> Slack alert
- Agent picks up     -> ticket_event row -> RLS check -> assigned_to update
- Resolution         -> ticket closed -> audit -> CSAT email scheduled
- Export             -> role check -> audit -> watermark -> CSV
- Admin review       -> audit_events search UI -> export by user/date

This stack ships in 3–5 weeks for a moderately complex internal tool and runs reliably for 2–4 years.

Cost to ship

For a 25-employee internal tool stack on Base44:

Line itemMonthlyOne-time
Base44 Pro plan$80–200
Auth0 (B2B Essentials, 1k MAU)$25–100
Cloudflare Worker$5$300
Postmark$30
Sentry$26
Build (auth, RLS, audit, export controls)$4,500–9,000
Total~$165–360/mo~$4,500–9,000

Compare to Retool at $250–800/month for 25 users plus build cost ($0–10k depending on complexity), or to a custom Next.js + Supabase + Auth0 stack at $100–200/month operational and $25,000–50,000 build. Base44 wins on the operational + build combined cost for teams under 50 users with custom workflow needs.

Migration off-ramp

Most internal tools never need to migrate off Base44. The exceptions:

  1. Compliance pressure — your security team requires SOC 2 Type II at the platform layer for any tool that handles regulated data. Migrate to Next.js + Supabase or Retool Enterprise.
  2. Scale — your tool now has 200+ daily active users, you hit rate limits, performance degrades. Migrate to a custom stack.
  3. Tool consolidation — a parent company's IT department mandates Retool or ServiceNow for all internal tools. Migrate.

Migration playbook is the same as for SaaS: Base44 to Next.js + Supabase. Internal tools migrate faster than SaaS because there is no public-facing surface, no SEO to preserve, and the user base is bounded. Typical timeline 6–10 weeks, $9,000–18,000 fixed-price.

Get this scoped

If you need an internal tool built — ops dashboard, admin console, approval workflow — and want it shipped fast with the auth, audit, and export controls done correctly, our MVP build engagement is priced for it ($4,500 fixed, 3–4 week turnaround). For larger internal tool consolidations across multiple workflows, standard build covers $9,000 / 4–6 weeks scope.

If you have an internal tool already running and want a written assessment of its security posture, the $497 production audit covers RLS coverage, audit log gaps, SSO configuration, and export control review.

Book a 15-minute call to scope your internal tool

QUERIES

Frequently asked questions

Q.01How does Base44 compare to Retool or Internal for internal tools?
A.01

Retool is more polished for non-developer builders and has deeper database connectors. Internal is comparable. Base44 wins on three things: (1) more flexibility when the workflow needs custom UI logic, (2) lower per-user cost at small team sizes, and (3) AI generation speed for the initial scaffold. Retool wins on three things: (1) connectors to 50+ databases out of the box, (2) more mature row-level permissions UI, (3) SSO included on lower-tier plans. For 5–50 user internal tools with custom workflow needs, Base44 is competitive. For BI-style dashboards on existing data warehouses, Retool is usually faster.

Q.02Can I get SSO with Okta, Google Workspace, or Azure AD on Base44?
A.02

Partially. Base44 supports Google OAuth out of the box and Magic Link auth. True enterprise SSO via SAML or OIDC with Okta or Azure AD is not native. The workaround is a proxy auth pattern: handle SAML on a separate domain (Auth0, Stytch, Clerk all support this), exchange the SAML assertion for a Base44 user token via a backend function, and rotate the token short. The 2025 SSO bypass disclosure also showed that even configured SSO did not always restrict access correctly, so audit your auth flow before relying on it for sensitive internal data.

Q.03How do I build row-level permissions for internal tool users?
A.03

With explicit RLS rules and a roles table. Base44's default RLS is permissive — every authenticated user sees every row. Pattern: a `users` collection with a `role` field, plus RLS rules that check role on every collection. Sample: `request.user.role IN ('support_agent', 'admin') AND row.assigned_to == request.user.id` for a support ticket queue. The discipline is auditing every collection's RLS rule on every schema change. The AI agent will generate code that bypasses RLS by calling backend functions with admin scope; you must audit those manually.

Q.04Can I connect Base44 to my existing Postgres database?
A.04

Not natively. Base44 uses its own database. To use an existing Postgres database, you build backend functions that proxy queries to your Postgres via direct connection (using deno-postgres or pg), then surface the results in the Base44 frontend. Read-only this is straightforward. Write-back is more complex because you lose Base44's collection-write hooks. For BI-style dashboards over an existing warehouse, this works well. For full-write integration, Retool's connector model is materially easier.

Q.05How do I prevent internal-tool users from leaking data?
A.05

Three patterns: (1) Audit log every read of sensitive collections — write to an `audit_events` row on every backend function call that returns regulated data; (2) Disable export buttons for users below a certain role — gate CSV/PDF exports behind a backend function that checks role; (3) Watermark exported data with the user's email and timestamp so leaks are traceable. None of this is built in. All of it is roughly 8–15 hours of hardening work on a typical internal tool build.

Q.06What does a Base44 internal tool actually cost to run?
A.06

For a 25-person team using internal tools daily: $80–200/month Base44 Pro plan, $0–100/month Auth0 if SSO is mandatory, $26/month Sentry, $0–50/month Postmark for notifications. Total: ~$110–375/month. Compare to Retool at $10/user/month ($250/month for 25 users on a higher tier), or a custom Next.js + Supabase + Auth0 stack at $100–200/month operational + $25,000–50,000 build. Base44 wins on flexibility-per-dollar at this size.

NEXT STEP

Ready to scope your build?

Free first call. Fixed-price scope after.