page:blueprints:professional training:asset library:next js

Professional training: asset library using Next.js

A asset library blueprint for professional training built with Next.js on Ample. Domain schema:

Public information: certification catalog, cohort dates, trainer credentials. Kept out of scope until handling is reviewed: exam results, employer billing, participant identity. Exam results and certifications are personal records; only cohort logistics and materials are modeled.

Technical basis verified on Next.js: content-type and size validation that rejects disallowed files, an object written to a private bucket and a row linking the record to the object key (reject=ok upload=ok linked=ok).

Representative Queries

Resource Requirements

Infrastructure Requirements

  1. Compute
    Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.

  2. Postgres
    Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.

  3. S3-compatible object storage
    Buckets are S3-compatible with issued credentials; PutObject and GetObject are verified by canary. Other S3 operations are not verified.

Prerequisites

Workflow Steps

  1. Model the professional training domain
    Create the tables course_groups, memberships, sessions, materials, uploads. Certification cohorts lives in course_groups; keep the sensitive classes (exam results, employer billing, participant identity) out of this schema.

  2. Workflow step 1
    Model assets linked to their owning group or workspace.

  3. Workflow step 2
    Validate uploads and store them in the private bucket; link each object to its row.

  4. Workflow step 3
    Authorize downloads by membership.

  5. Workflow step 4
    Deploy and verify rejection of disallowed files and a linked upload.

  6. Deploy
    Run the synchronous deploy once and read the result. Re-running with no change is a no-op.

Command: ample deploy . --name --public --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...

  1. Verify
    Run the pattern self-test(s) from the example (/p/browser-file-uploads) and your own acceptance checks for the professional training workflow.

Command: ample logs --kind build

Examples

Success Checks

  1. app responds on its public URL
    • Expect: ample canary next js patterns
  2. browser-file-uploads self-test from the example
    • Expect: see the pattern fixture checks

Limitations