Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9ec98c5
feat: OpenAPI API reference from Git (#26)
Oct 25, 2026
3c54c43
Merge origin/main into t3/plan-issue-26-architecture
Oct 25, 2026
d8c2580
docs: add architecture guidelines
Oct 25, 2026
56c3db1
test(docs): reserve the API reference URL path; docs: record what was…
Oct 25, 2026
6bb787d
fix(api-reference): drop emptied paths from /openapi.json; reload adm…
Oct 30, 2026
3dde1ef
perf(sites): list only the current API group's endpoints in the docs …
Oct 30, 2026
612626b
fix(api-reference): don't claim "No authentication required" when the…
Oct 30, 2026
9d27db1
fix(sites): open the hosted /openapi.json instead of downloading it
Oct 30, 2026
d62a267
fix(sites): upgrade Next.js to 16.4.3 to stop a per-render memory leak
Oct 30, 2026
81e5e93
feat(sites): browse every API group in the sidebar without shipping t…
Oct 30, 2026
0eafea0
fix(sites): wrap long endpoint paths in the title and sidebar
Oct 30, 2026
ca0bdf6
fix(sites): smaller operation title
Oct 30, 2026
8d8934c
feat(api-reference): title operations like Fumadocs when there's no s…
Oct 30, 2026
4a7f81e
feat(sites): inline request panel instead of the Try it dialog
Oct 30, 2026
485023a
fix(sites): more space between the operation title and the request panel
Oct 30, 2026
b81387d
feat(sites): request form visible from the start; layout fixes
Oct 30, 2026
2ce22f8
feat(api-reference): Go, Java and C# code samples
Oct 30, 2026
fb4fc3c
fix(sites): align sidebar method badges with their endpoint titles
Oct 30, 2026
8784af1
fix(a11y): heading levels, search combobox, menu trigger
Oct 30, 2026
574ade4
fix(sites): meta description on the API reference landing page
Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/page-builder-a11y-chrome.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@frontlit/page-builder": patch
---

Accessibility fixes in site chrome: the `Drawer` trigger props now go on the trigger element instead of a wrapping `span` (no more `aria-expanded` on a non-interactive element), and footer column titles are `h2` instead of `h4`, so headings no longer skip levels.
5 changes: 5 additions & 0 deletions .changeset/page-builder-api-reference-primitives.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@frontlit/page-builder": minor
---

Add `Tabs`, `Table`, `Collapsible`, `NativeSelect` and `InlineCode` primitives (all themed; `Tabs` is a client island, the rest are server-safe), and export `CodeSnippet` from `@frontlit/page-builder/primitives/server`.
5 changes: 5 additions & 0 deletions .changeset/page-builder-section-sticky.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@frontlit/page-builder": patch
---

`Section` clips its content with `overflow: clip` instead of `overflow: hidden`, so sticky elements inside a section (such as a docs sidebar) stick to the viewport again.
7 changes: 7 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Development Guidelines for FrontLit

## Architecture Guidelines

- Strive for a simpler design and add more complexity only when it is required to solve a problem.
- Avoid over-engineering.
- Don't go for premature-optimizations.
- We haven't hit planet scale yet, so don't try to cater to edge cases which our users may not even encounter.

## Development Tips

- The platform is in early stages of development. We don't even have a production deployment yet. So, feel free to scratch migrations and write those from scratch as many times as you need, reset database etc.. No need to worry about being backwards compatible.
Expand Down
53 changes: 53 additions & 0 deletions apps/api/drizzle/0012_openapi_reference.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
CREATE TABLE IF NOT EXISTS "documentation_api_operations" (
"spec_id" text NOT NULL,
"team_id" text NOT NULL,
"route" text NOT NULL,
"title" text NOT NULL,
"group" text NOT NULL,
"order" integer NOT NULL,
"method" text NOT NULL,
"path" text NOT NULL,
"deprecated" boolean DEFAULT false NOT NULL,
"slice" text NOT NULL,
"chunks" jsonb NOT NULL
);
--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "documentation_api_specs" (
"spec_id" text PRIMARY KEY NOT NULL,
"team_id" text NOT NULL,
"status" text NOT NULL,
"commit_sha" text NOT NULL,
"source_path" text NOT NULL,
"source_blob_sha" text,
"mount" text NOT NULL,
"spec" text,
"spec_hash" text,
"info" jsonb,
"diagnostics" jsonb DEFAULT '[]'::jsonb NOT NULL,
"created_at" timestamp DEFAULT now() NOT NULL
);
--> statement-breakpoint
ALTER TABLE "documentation_git_bindings" ADD COLUMN "api_spec_path" text;--> statement-breakpoint
ALTER TABLE "documentation_git_bindings" ADD COLUMN "api_mount" text DEFAULT 'api-reference' NOT NULL;--> statement-breakpoint
ALTER TABLE "documentation_settings" ADD COLUMN "active_api_spec_id" text;--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "documentation_api_operations" ADD CONSTRAINT "documentation_api_operations_spec_id_documentation_api_specs_spec_id_fk" FOREIGN KEY ("spec_id") REFERENCES "public"."documentation_api_specs"("spec_id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "documentation_api_operations" ADD CONSTRAINT "documentation_api_operations_team_id_teams_id_fk" FOREIGN KEY ("team_id") REFERENCES "public"."teams"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "documentation_api_specs" ADD CONSTRAINT "documentation_api_specs_team_id_teams_id_fk" FOREIGN KEY ("team_id") REFERENCES "public"."teams"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
CREATE UNIQUE INDEX IF NOT EXISTS "documentation_api_operations_route_idx" ON "documentation_api_operations" USING btree ("spec_id","route");--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "documentation_api_operations_team_idx" ON "documentation_api_operations" USING btree ("team_id");--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "documentation_api_specs_team_idx" ON "documentation_api_specs" USING btree ("team_id","status");
Loading
Loading