Skip to content

Examples demo: Oracle notes app - #111

Merged
ryanrasti merged 1 commit into
mainfrom
demo/oracle-notes
Aug 19, 2026
Merged

Examples demo: Oracle notes app#111
ryanrasti merged 1 commit into
mainfrom
demo/oracle-notes

Conversation

@ryanrasti

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new end-to-end “Oracle Notes” example app that demonstrates Typegres’ capability-based API model backed by Oracle DB, including a React UI, an HTTP batch RPC transport, server/migration logic, tests, and deployment assets.

Changes:

  • Extend the typegres/capnweb shim re-exports to support HTTP batch RPC client/server helpers used by the example.
  • Add the Oracle Notes example: React client, Node HTTP server, Typegres schema/API, migrations, and Vitest coverage.
  • Add Fly.io + Docker deployment scaffolding for running the demo with a separate Oracle app.

Reviewed changes

Copilot reviewed 28 out of 29 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/capnweb/shim.ts Re-exports additional capnweb helpers needed by the example’s client/server RPC wiring.
examples/oracle-notes/vitest.config.ts Adds Vitest config for the example using SWC for TS transforms.
examples/oracle-notes/vite.config.ts Adds Vite config for the React client + dev proxy to the API server.
examples/oracle-notes/tsdown.config.ts Adds Node build config for the example’s server bundle.
examples/oracle-notes/tsconfig.json Adds TS config for the example (client, server, tests).
examples/oracle-notes/tests/oracle-live.test.ts Adds live Oracle integration tests (gated by ORACLE_URL).
examples/oracle-notes/tests/config.test.ts Adds unit tests for Oracle URL parsing/config.
examples/oracle-notes/tests/auth.test.ts Adds unit tests for password hashing/verification helpers.
examples/oracle-notes/src/styles.css Adds client styling for the demo UI.
examples/oracle-notes/src/rpc.ts Adds client RPC helpers for login + listing notes via HTTP batch RPC.
examples/oracle-notes/src/main.tsx Adds React entrypoint wiring.
examples/oracle-notes/src/App.tsx Implements the React notes UI (login, list, edit, delete).
examples/oracle-notes/server/migrate.ts Adds Oracle schema/migration statements for users/notes.
examples/oracle-notes/server/index.ts Adds Node HTTP server: healthz, RPC handler, and static serving.
examples/oracle-notes/server/dev.ts Adds dev bootstrap defaults and server startup for tsx watch.
examples/oracle-notes/server/config.ts Adds environment parsing for Oracle pool attrs, port, and static root.
examples/oracle-notes/server/auth.ts Adds PBKDF2-based password hashing/verification for the demo.
examples/oracle-notes/server/api.ts Adds Typegres tables + exposed capabilities implementing the app API.
examples/oracle-notes/README.md Documents the example’s model, dev workflow, deployment, and security scope.
examples/oracle-notes/package.json Adds example-specific scripts and deps (React, oracledb, vitest, etc.).
examples/oracle-notes/package-lock.json Locks example dependencies.
examples/oracle-notes/index.html Adds Vite HTML entry for the example client.
examples/oracle-notes/fly.oracle.toml Fly config for the Oracle VM/app.
examples/oracle-notes/fly.app.toml Fly config for the Node app VM/app.
examples/oracle-notes/Dockerfile.dockerignore Docker ignore rules for building the example image efficiently.
examples/oracle-notes/Dockerfile Multi-stage Docker build for the combined client/server artifact.
examples/oracle-notes/deploy.sh Adds a deployment script orchestrating both Fly apps + secrets + cert.
examples/oracle-notes/.gitignore Ignores local env/build artifacts for the example.
examples/oracle-notes/.env.example Provides a template for deployment environment variables.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +45 to +46
const requested = normalize(decodeURIComponent(url.pathname)).replace(/^(\.\.[/\\])+/, "");
let file = join(staticRoot, requested === "/" ? "index.html" : requested);
"cache-control": file.endsWith("index.html") ? "no-cache" : "public, max-age=31536000, immutable",
"content-type": mimeTypes[extname(file)] ?? "application/octet-stream",
});
createReadStream(file).pipe(response);
Comment on lines +19 to +20
// Oracle represents an empty VARCHAR2 as NULL, so note bodies are nullable.
// This also upgrades databases created by the earlier NOT NULL definition.
@ryanrasti
ryanrasti merged commit b8fbf7d into main Aug 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants