Examples demo: Oracle notes app - #111
Merged
Merged
Conversation
ryanrasti
force-pushed
the
demo/oracle-notes
branch
from
August 19, 2026 20:35
393c786 to
bbe234e
Compare
There was a problem hiding this comment.
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/capnwebshim 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. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.