PromptStack

Management system

A general administrative system for tracking records: create, view, edit, and search entities, with staff roles controlling who may do what, plus reporting over the data held.

You can change every choice once the builder opens.
Core features for the MVP
  • Create, view, edit, and archive records
  • List views with search, filtering, sorting, and pagination
  • User accounts with roles that control access
  • Audit trail of who changed what and when
  • Reports and exports over the stored data
  • Bulk import from an existing spreadsheet
Left for later
  • Custom fields defined by administrators
  • Scheduled report delivery by email
  • A public read-only view for selected records

Recommended stack

SectionRecommended
LanguageTypeScript
Frontend frameworkNext.js
UI and stylingTailwind CSSshadcn/ui
BackendNext.js server
API styleServer actions
Database enginePostgreSQL
Database providerNeon
ORM and data accessDrizzle
AuthenticationClerk
Authorization and rolesRole-based access control
SecurityInput validationRate limitingSecurity headers and CSPSecrets managementAudit logs
File storageAWS S3
Hosting and deploymentVercel
CI/CDGitHub Actions
Monitoring and analyticsSentry
TestingVitestPlaywright
ExtrasCSV and Excel import/exportAccessibility (WCAG)BackupsDocumentation

Data model draft

User

A staff member who signs in to the system.

  • id
  • email
  • fullName
  • role
  • isActive
  • createdAt
  • Has many AuditEntries
  • Has many Records as owner
Record

The main entity the system manages, renamed to suit the domain.

  • id
  • reference
  • title
  • status
  • ownerId
  • createdAt
  • updatedAt
  • Belongs to one User as owner
  • Has many Attachments
Attachment

A file attached to a record.

  • id
  • recordId
  • fileName
  • storageKey
  • sizeBytes
  • uploadedById
  • Belongs to one Record
  • Belongs to one User as uploader
AuditEntry

One change made to a record, kept for accountability.

  • id
  • recordId
  • userId
  • action
  • changedFields
  • createdAt
  • Belongs to one Record
  • Belongs to one User