Skip to content
This repository was archived by the owner on Aug 7, 2026. It is now read-only.

Commit e4fc552

Browse files
committed
feat: Initial Antora Themes Gallery implementation
- Astro 5 with SolidJS islands and TailwindCSS v4 - Turso database with Drizzle ORM for themes and users - Lucia auth with GitHub, GitLab, Google OAuth + email/password - Home page with featured themes, browse page with search/filter - Theme submission form with GitHub repo validation - Full Antora documentation (user guide + admin guide) - Configured for Vercel SSR deployment
0 parents  commit e4fc552

62 files changed

Lines changed: 10446 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# build output
2+
dist/
3+
docs/build/
4+
.vercel/
5+
6+
# generated types
7+
.astro/
8+
9+
# dependencies
10+
node_modules/
11+
12+
# logs
13+
npm-debug.log*
14+
yarn-debug.log*
15+
yarn-error.log*
16+
pnpm-debug.log*
17+
18+
19+
# environment variables
20+
.env
21+
.env.production
22+
23+
# macOS-specific files
24+
.DS_Store
25+
26+
# jetbrains setting folder
27+
.idea/

.vscode/extensions.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"recommendations": ["astro-build.astro-vscode"],
3+
"unwantedRecommendations": []
4+
}

.vscode/launch.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"command": "./node_modules/.bin/astro dev",
6+
"name": "Development server",
7+
"request": "launch",
8+
"type": "node-terminal"
9+
}
10+
]
11+
}

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 The Dev Center
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.adoc

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
= Antora Themes Gallery
2+
:toc: macro
3+
:toc-title: Contents
4+
5+
A beautiful gallery and registry for https://antora.org[Antora] documentation themes built with https://astro.build[Astro] and https://www.solidjs.com[SolidJS].
6+
7+
toc::[]
8+
9+
== Features
10+
11+
* **Theme Gallery** -- Browse and search Antora UI themes
12+
* **Live Previews** -- See themes in action via GitHub Pages demos
13+
* **Theme Validation** -- Submit themes with automated validation
14+
* **Decentralized Architecture** -- Themes are hosted on developers' own repositories
15+
16+
== Getting Started
17+
18+
=== Prerequisites
19+
20+
* Node.js 18+
21+
* pnpm
22+
23+
=== Installation
24+
25+
[source,bash]
26+
----
27+
# Clone the repository
28+
git clone https://github.com/the-dev-center/antora-themes-site.git
29+
cd antora-themes-site
30+
31+
# Install dependencies
32+
pnpm install
33+
34+
# Start development server
35+
pnpm dev
36+
----
37+
38+
=== Building for Production
39+
40+
[source,bash]
41+
----
42+
pnpm build
43+
pnpm preview
44+
----
45+
46+
== Submitting a Theme
47+
48+
To submit your Antora UI theme to the gallery:
49+
50+
. Create a public GitHub repository with your Antora UI theme
51+
. Add a `preview.png` screenshot (1280x720 recommended) to your repository root
52+
. Enable GitHub Pages for your repository
53+
. Visit the gallery and submit your repository URL
54+
55+
=== Automated Screenshots
56+
57+
Add this GitHub Action to your theme repository for automatic screenshot generation:
58+
59+
[source,yaml]
60+
----
61+
- name: Generate Preview Screenshot
62+
uses: simonw/shot-scraper-action@v1
63+
with:
64+
url: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/
65+
output: preview.png
66+
width: 1280
67+
height: 720
68+
69+
- name: Commit Screenshot
70+
run: |
71+
git config user.name "Preview Bot"
72+
git config user.email "actions@github.com"
73+
git add preview.png
74+
git commit -m "Update preview screenshot" || exit 0
75+
git push
76+
----
77+
78+
== Architecture
79+
80+
This site uses a decentralized approach:
81+
82+
* **No Build Pipeline** -- Themes are built and hosted by developers
83+
* **Metadata Registry** -- The gallery stores only theme metadata and links
84+
* **GitHub API Integration** -- Validates themes and fetches repository info
85+
86+
=== App Structure
87+
88+
[source]
89+
----
90+
src/
91+
├── components/ # SolidJS interactive components
92+
│ ├── SubmitThemeForm.tsx # Theme submission with validation
93+
│ ├── ThemeCard.tsx # Individual theme card with preview
94+
│ └── ThemeGallery.tsx # Filterable/searchable gallery grid
95+
├── data/
96+
│ └── themes.ts # Sample themes and localStorage helpers
97+
├── layouts/
98+
│ └── Layout.astro # Main layout with nav and footer
99+
├── lib/
100+
│ └── github.ts # GitHub API integration for validation
101+
├── pages/
102+
│ ├── index.astro # Homepage with hero + gallery
103+
│ └── submit.astro # Theme submission page
104+
├── styles/
105+
│ └── global.css # Tailwind CSS configuration
106+
└── types/
107+
└── theme.ts # TypeScript interfaces
108+
----
109+
110+
**Component Details**
111+
112+
`ThemeCard.tsx`::
113+
Displays a single theme with preview image, metadata, star count, and action buttons for viewing the demo or repository.
114+
115+
`ThemeGallery.tsx`::
116+
Renders a grid of ThemeCards with search, tag filtering, and sorting (by stars, update date, or name).
117+
118+
`SubmitThemeForm.tsx`::
119+
Handles theme submission with real-time validation via the GitHub API. Checks that the repository exists and contains a `preview.png`.
120+
121+
`github.ts`::
122+
Utility functions for parsing GitHub URLs, fetching repository info, validating preview images, and building theme objects from API responses.
123+
124+
== Tech Stack
125+
126+
* https://astro.build[Astro] -- Static site framework
127+
* https://www.solidjs.com[SolidJS] -- Reactive UI components
128+
* https://tailwindcss.com[Tailwind CSS] -- Utility-first styling
129+
* TypeScript -- Type safety
130+
131+
== License
132+
133+
MIT

astro.config.mjs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// @ts-check
2+
import { defineConfig } from 'astro/config';
3+
import solidJs from '@astrojs/solid-js';
4+
import tailwindcss from '@tailwindcss/vite';
5+
import vercel from '@astrojs/vercel';
6+
7+
// https://astro.build/config
8+
export default defineConfig({
9+
output: 'server',
10+
adapter: vercel(),
11+
12+
integrations: [solidJs()],
13+
14+
vite: {
15+
plugins: [tailwindcss()]
16+
}
17+
});

docs/antora-playbook.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Antora Playbook for building the Antora Themes Gallery documentation
2+
# Run with: pnpm build
3+
4+
site:
5+
title: Antora Themes Gallery Docs
6+
start_page: antora-themes-site::user:index.adoc
7+
8+
content:
9+
sources:
10+
- url: .
11+
branches: HEAD
12+
start_path: .
13+
14+
ui:
15+
bundle:
16+
url: https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable
17+
snapshot: true
18+
supplemental_files: ./supplemental-ui
19+
20+
asciidoc:
21+
attributes:
22+
source-highlighter: highlight.js
23+
icons: font

docs/antora.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: antora-themes-site
2+
title: Antora Themes Gallery
3+
version: ~
4+
start_page: user:index.adoc
5+
nav:
6+
- modules/user/nav.adoc
7+
- modules/admin/nav.adoc

docs/modules/admin/nav.adoc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.For Administrators
2+
* xref:index.adoc[Overview]
3+
* xref:concept.adoc[Design Decisions]
4+
* xref:architecture.adoc[Architecture]
5+
* Deployment
6+
** xref:setup.adoc[Setup Guide]
7+
** xref:environment.adoc[Environment Variables]
8+
* xref:authentication.adoc[Authentication]
9+
* xref:database.adoc[Database Schema]

0 commit comments

Comments
 (0)