From 3c2544518a15140899625a6e0c0f72e2f635c831 Mon Sep 17 00:00:00 2001
From: Saksham Jain
Date: Fri, 31 Jul 2026 09:20:27 +0530
Subject: [PATCH 1/8] refactor(branding,docs): relocate brand folder to
public/brand and update bootstrap setup checklist
- Move brand guidelines and assets to public/brand and public/brand/icons
- Update asset paths across documentation, metadata, AI configs, and components
- Refactor relative imports to use @/* path aliases across app routes
- Add Devanagari font fallback and locale-aware layout metadata
- Update README setup checklist to cover all TODO repository placeholders
---
.coderabbit.yml | 4 +-
.github/workflows/ci.yml | 11 ++-
AGENTS.md | 6 +-
COPYRIGHT.md | 2 +-
Contributors.md | 6 +-
README.md | 77 ++++++++++++--------
brand/logo.svg | 1 -
package.json | 7 +-
public/.well-known/ai-plugin.json | 14 ++--
public/.well-known/assetlinks.json | 4 +-
public/assets/icons/aossie_logo.svg | 1 -
public/assets/icons/favicon.ico | Bin 16166 -> 0 bytes
{brand => public/brand}/Brand.md | 8 +-
public/brand/icons/aossie_logo.svg | 7 ++
{brand => public/brand/icons}/favicon.ico | Bin
public/brand/icons/stability_nexus_logo.svg | 17 +++++
public/file.svg | 1 -
public/globe.svg | 1 -
public/llms.txt | 6 +-
public/next.svg | 1 -
public/robots.txt | 2 +-
public/stability.svg | 14 ----
public/vercel.svg | 1 -
public/window.svg | 1 -
src/app/[locale]/error.tsx | 1 +
src/app/[locale]/globals.css | 14 +++-
src/app/[locale]/layout.tsx | 31 +++++---
src/app/[locale]/not-found.tsx | 2 +-
src/app/[locale]/page.tsx | 16 ++--
src/components/LanguageSwitcher.tsx | 4 +-
src/components/ThemeToggle.tsx | 7 +-
src/i18n/metadata.ts | 4 +-
32 files changed, 156 insertions(+), 115 deletions(-)
delete mode 100644 brand/logo.svg
delete mode 100644 public/assets/icons/aossie_logo.svg
delete mode 100644 public/assets/icons/favicon.ico
rename {brand => public/brand}/Brand.md (84%)
create mode 100644 public/brand/icons/aossie_logo.svg
rename {brand => public/brand/icons}/favicon.ico (100%)
create mode 100644 public/brand/icons/stability_nexus_logo.svg
delete mode 100644 public/file.svg
delete mode 100644 public/globe.svg
delete mode 100644 public/next.svg
delete mode 100644 public/stability.svg
delete mode 100644 public/vercel.svg
delete mode 100644 public/window.svg
diff --git a/.coderabbit.yml b/.coderabbit.yml
index 8aaf7f9..b86a0a0 100644
--- a/.coderabbit.yml
+++ b/.coderabbit.yml
@@ -226,8 +226,8 @@ reviews:
Review test files for:
- Comprehensive coverage of contract behavior
- # Asset files (images, fonts, etc.)
- - path: "assets/**/*"
+ # Asset files (icons, assets, images, fonts, etc.)
+ - path: "public/brand/**/*"
instructions: |
Review asset files for:
- Image optimization (appropriate size and format)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3c4ba2c..173e7c9 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -6,6 +6,9 @@ on:
pull_request:
branches: [ "main" ]
+permissions:
+ contents: read
+
jobs:
build:
runs-on: ubuntu-latest
@@ -16,10 +19,10 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v4
-
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+
- name: Setup Node.js
- uses: actions/setup-node@v4
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0 # v4.0.3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
@@ -31,4 +34,4 @@ jobs:
run: npm run lint
- name: Build project
- run: npm run build
+ run: npm run build
\ No newline at end of file
diff --git a/AGENTS.md b/AGENTS.md
index 907b1ad..a429bc3 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -4,9 +4,9 @@
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
-# AOSSIE Webpage Starter
+# TODO: Project Title
-Project specific context and directives for AI agents.
+TODO: Project specific context and directives for AI agents.
## 🛠️ Stack & Commands
@@ -35,5 +35,5 @@ Project specific context and directives for AI agents.
## 📦 Project Boundaries
- **Config alias map:** Webpack & Turbopack alias resolvers are manually defined in [`next.config.ts`](next.config.ts) mapping `"next-intl/config"` to our local request setup. Do not import the native `@swc/core` compiler plugin wrapper `createNextIntlPlugin` directly to avoid security policy native module blocks.
-- **Branding Assets:** The official branding logo, favicon, and style specifications reside inside [`brand/`](brand/).
+- **Branding Assets:** The official branding logo, favicon, and style specifications reside inside [`public/brand/`](public/brand/).
diff --git a/COPYRIGHT.md b/COPYRIGHT.md
index d9467d0..471ccb9 100644
--- a/COPYRIGHT.md
+++ b/COPYRIGHT.md
@@ -1,4 +1,4 @@
-Copyright © 2025 The Stable Order
+Copyright © 2026 The Stable Order
All rights reserved.
All works in this repository may be used according to the conditions
diff --git a/Contributors.md b/Contributors.md
index e0e23b1..54f2084 100644
--- a/Contributors.md
+++ b/Contributors.md
@@ -1,8 +1,8 @@
This file contains information about people who contribute to this project.
Please do not contact these people directly.
-Instead, join our [Discord](https://discord.gg/fuuWX4AbJt) and communicate about
-this project in the [TODO channel](TODO).
+Instead, join our [Discord AOSSIE](https://discord.gg/hjUhu33uAn) or join our [Discord Stability Nexus](https://discord.gg/fuuWX4AbJt) and communicate about
+this project in the [TODO Channel](TODO).
## Contributors
@@ -12,4 +12,4 @@ are made under the terms of the [Developer Certificate of Origin](DCO.md).
| Name | Github Username | Discord Username | Email Address |
| -------------------------------- | ------------------ | ------------------ | ---------------------------- |
| Bruno Woltzenlogel Paleo | @Zahnentferner | @b.wp | zahnentferner@gmail.com |
-| TODO | TODO | TODO | TODO |
+| Saksham Jain | @reach2saksham | @theonlypro | reach2saksham2004@gmail.com |
diff --git a/README.md b/README.md
index 306284f..b9035af 100644
--- a/README.md
+++ b/README.md
@@ -3,8 +3,8 @@
@@ -40,9 +40,9 @@
-
+
-
+
@@ -54,13 +54,11 @@
[TODO](https://TODO.aossie.org/) is a ... TODO: Project Description.
-A high-performance, developer-friendly webpage starter kit built on **Next.js 16 (App Router)**, **React 19**, **Tailwind CSS v4**, and pre-configured for **Internationalization (i18n)** and **Localization (l10n)** using **next-intl**.
-
-This starter is designed for organizations looking to kickstart their web presence with a fully accessible, multi-lingual, and responsive architecture out-of-the-box.
+A high-performance, developer-friendly webpage built on **Next.js 16 (App Router)**, **React 19**, **Tailwind CSS v4**, and pre-configured for **Internationalization (i18n)** and **Localization (l10n)** using **next-intl**.
---
-## 🚀 Features
+## 🚀 Project's Features
TODO: List your main features here:
@@ -81,13 +79,13 @@ TODO: Update based on your project
In the checklist below, mark the items that have been completed for your project:
-* [x] The project has a logo (`brand/logo.svg`).
-* [x] The project has a favicon (`brand/favicon.ico`).
+* [x] The project has a logo (`public/brand/icons/aossie_logo.svg`).
+* [x] The project has a favicon (`public/brand/icons/favicon.ico`).
* [x] The web frontend:
- [x] Has proper title and metadata.
- [x] Has proper open graph metadata, to ensure that it is shown well when shared in social media.
- [x] Has a footer and header with AOSSIE logos and social handles.
- - [x] Is client-side rendered (`"use client"` configured for pages).
+ - [x] Uses React Server Components by default, introducing Client Components (`"use client"`) only when interactivity or client hooks are required.
- [x] Is deployed to GitHub Pages via a GitHub Workflow (`.github/workflows/nextjs.yml`).
- [x] Has automated CI build and lint validation (`.github/workflows/ci.yml`).
- [x] Has CodeRabbit automated AI code review (`.coderabbit.yml`).
@@ -95,14 +93,14 @@ In the checklist below, mark the items that have been completed for your project
---
-## 🚀 Key Features
+## 🚀 Website's Features
- **Next.js 16 & React 19:** Utilizing the latest Server Components, Client Actions, and async routing paradigms.
- **Tailwind CSS v4:** Modern utility-first styling with native CSS variables and streamlined postcss integrations.
- **Dual Theme System:** Flash-free light, dark, and system preferred themes using `next-themes` and Tailwind CSS v4 custom variants.
- **Robust i18n & l10n:** Deeply integrated multi-language support:
- Automatic locale detection based on browser preferences.
- - Subpath routing (e.g., `/en`, `/hi`) with clean `as-needed` URL prefixing.
+ - Subpath routing (e.g., `/hi` for Hindi, and unprefixed `/` for English as default) with clean `as-needed` URL prefixing.
- Sleek, interactive language switcher client component.
- Zero-bundle-size footprint for static translations using Server Components & Client `useTranslations`.
- **Developer Experience:** Strict TypeScript compilation and ES Lint setup.
@@ -119,18 +117,24 @@ Here is a breakdown of the key i18n directories and files:
```text
├── .github/
│ └── workflows/ # GitHub Actions (CI, GitHub Pages deployment, merge conflict checks)
-├── brand/
-│ ├── logo.svg # Vector logo
-│ ├── favicon.ico # Browser tab icon
-│ └── Brand.md # Official AOSSIE brand guidelines document
├── next.config.ts # Alias-wrapped Next configuration
├── public/ # Static assets, robots.txt, assetlinks.json, llms.txt
+│ ├── .well-known/
+│ ├── llms.txt
+│ ├── robots.txt
+│ └── brand/
+│ ├── Brand.md # Official AOSSIE brand guidelines document
+│ └── icons/
+│ ├── aossie_logo.svg # AOSSIE Vector logo
+│ ├── stability_nexus_logo.svg # Vector logo
+│ └── favicon.ico # Browser tab icon
├── src/
│ ├── config/
│ │ └── languages.ts # Central registry of supported languages & locales
│ ├── i18n/
│ │ ├── routing.ts # Core i18n routing parameters (locales, defaults)
│ │ ├── request.ts # Server-side translation dictionary loading configuration
+│ │ ├── metadata.ts # Configuration data, SEO values, or reflection data for a project
│ │ └── navigation.ts # Type-safe navigation helpers (Link, useRouter, etc.)
│ ├── messages/
│ │ ├── en.json # English translation dictionary
@@ -245,6 +249,9 @@ router.replace(pathname, { locale: 'hi' });
The starter kit uses `next-themes` combined with Tailwind CSS v4's class-based custom variants to provide a responsive and flash-free theme experience.
#### Customizing Colors
+
+**Preferred Method**
+
Tailwind v4 is configured via CSS custom properties in [`src/app/[locale]/globals.css`](src/app/[locale]/globals.css). To adjust the default light and dark theme background or text colors, edit the root variables:
```css
@@ -309,7 +316,7 @@ Start the development server:
npm run dev
```
-Open [http://localhost:3000](http://localhost:3000) to view it. The application will automatically detect your browser's language preferences and route you to `/en` or `/hi` (or fall back to the default language, English).
+Open [http://localhost:3000](http://localhost:3000) to view it. The application will automatically detect your browser's language preferences and route you to `/hi` for Hindi or `/` for English (the default locale, which omits the prefix).
### Building for Production
@@ -331,23 +338,29 @@ npm run start
## ⚙️ Initial Project Setup Checklist
-When bootstrapping a new project from this starter repository, update the following configurations to align with your project's branding, package naming, and hosting domains:
+When bootstrapping a new project from this starter repository, complete the following `TODO` setup checklist to align the repository with your project's branding, metadata, AI agent guidelines, and hosting configurations:
+
+### 1. Project Identity & Header Details
+- **Project Title & Logo ([`README.md`](README.md))**: Update the main project header logo (`public/todo-project-logo.svg`), title `TODO: Project Name `, project description, feature list, and tech stack.
+- **AI Agent Context ([`AGENTS.md`](AGENTS.md))**: Replace `# TODO: Project Title` and add project-specific directives and rules for AI coding agents.
+- **LLM Manifest ([`public/llms.txt`](public/llms.txt))**: Update `# TODO: Project Title` in the root LLM crawler policy.
+- **Community & Social Links ([`Contributors.md`](Contributors.md))**: Replace the `[TODO Channel](TODO)` placeholder with your project's Discord, Telegram, or chat channel link.
-### 1. Domain Names & Sitemap URL
-- **Sitemap Generator ([`src/app/sitemap.ts`](src/app/sitemap.ts))**: Replace the default fallback domain `https://project.aossie.org` with your project's production domain, or set the `NEXT_PUBLIC_SITE_URL` environment variable in your production hosting panel.
-- **Search Crawler Rules ([`public/robots.txt`](public/robots.txt))**: Replace the sitemap URL domain `https://project.aossie.org/sitemap.xml` with your production URL.
+### 2. Domain Names & Search Engine Crawlers
+- **Sitemap Generator ([`src/app/sitemap.ts`](src/app/sitemap.ts))**: Replace the default fallback domain `https://project.aossie.org` with your project's production domain in the source code or set the `NEXT_PUBLIC_SITE_URL` environment variable at build time (e.g., in `.github/workflows/nextjs.yml` or build pipeline settings).
+- **Search Crawler Rules ([`public/robots.txt`](public/robots.txt))**: Replace the sitemap URL placeholder domain `TODO:'project.aossie.org'` with your actual production domain.
-### 2. Branding Guidelines & Assets
-- **Logo & Favicons ([`brand/`](brand/))**: Replace `logo.svg` and `favicon.ico` with your organization's custom logos. Copy these updated assets to the [`public/assets/icons/`](public/assets/icons/) directory as well (`public/assets/icons/aossie_logo.svg` and `public/assets/icons/favicon.ico`).
-- **Brand Documentation ([`brand/Brand.md`](brand/Brand.md))**: Document your custom color hex codes, typography selections, and asset paths here to guide future developers and AI coding agents.
+### 3. Branding Guidelines & Assets
+- **Logo & Favicons ([`public/brand/icons/`](public/brand/icons/))**: Replace `aossie_logo.svg` and `favicon.ico` with your organization's custom logos.
+- **Brand Documentation ([`public/brand/Brand.md`](public/brand/Brand.md))**: Document your custom color hex codes, typography selections, and asset paths here to guide future developers and AI coding agents.
-### 3. SEO Structured Data
-- **Schema.org JSON-LD ([`src/app/[locale]/page.tsx`](src/app/[locale]/page.tsx))**: Locate the `jsonLd` object inside the `Home` component. Replace the default publisher URLs and name fields with your specific project metadata.
+### 4. SEO & i18n Localization Metadata
+- **Schema.org JSON-LD ([`src/app/[locale]/page.tsx`](src/app/[locale]/page.tsx))**: Locate the `jsonLd` object inside the `Home` component. Update the `publisher.name`, `publisher.url`, and `publisher.logo` fields from `TODO` placeholders to your project metadata.
+- **Translation Catalogs ([`src/messages/en.json`](src/messages/en.json), [`src/messages/hi.json`](src/messages/hi.json))**: Update the `heading`, `metaTitle`, and `metaDescription` keys with your project's localized titles and descriptions.
-### 4. Mobile & AI Platform Configurations
-- **Android App Links ([`public/.well-known/assetlinks.json`](public/.well-known/assetlinks.json))**: Change the package name `org.aossie.starter` and insert your Android application certificate SHA-256 fingerprint to handle incoming domain links on mobile.
-- **AI Agent Plugins ([`public/.well-known/ai-plugin.json`](public/.well-known/ai-plugin.json))**: Update the host URLs, contact emails, and description text to describe your final website's features to AI agents.
-- **LLM Crawler Rules ([`public/llms.txt`](public/llms.txt))**: Serves the root crawlers policy indicating allowing LLM bot indexing. Update if you wish to block specific AI search engines.
+### 5. Mobile & AI Platform Configurations
+- **Android App Links ([`public/.well-known/assetlinks.json`](public/.well-known/assetlinks.json))**: Update the package name `TODO:org.aossie.starter` and insert your Android application certificate SHA-256 fingerprint (`TODO:...`).
+- **AI Agent Plugins ([`public/.well-known/ai-plugin.json`](public/.well-known/ai-plugin.json))**: Replace all `TODO` placeholders for `name_for_human`, `name_for_model`, `description_for_human`, `description_for_model`, host URLs, contact emails, and legal info links.
---
@@ -364,4 +377,4 @@ We welcome contributions of all kinds! To contribute:
4. Push your branch (`git push origin feature/AmazingFeature`).
5. Open a Pull Request for review.
-© 2025 AOSSIE. Released under the Apache 2.0 / Open Source License.
+© 2026 AOSSIE. Released under the Apache 2.0 / Open Source License.
diff --git a/brand/logo.svg b/brand/logo.svg
deleted file mode 100644
index 0fecb94..0000000
--- a/brand/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/package.json b/package.json
index b31b065..f9dd8ff 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,9 @@
"name": "webpage-starter",
"version": "0.1.0",
"private": true,
+ "engines": {
+ "node": ">=20.9.0"
+ },
"scripts": {
"dev": "next dev",
"build": "next build",
@@ -11,14 +14,12 @@
"dependencies": {
"@swc/helpers": "^0.5.23",
"lenis": "^1.3.25",
-
"next": "16.2.11",
"next-intl": "^4.13.4",
"next-themes": "^0.4.6",
"react": "19.2.4",
"react-dom": "19.2.4"
},
-
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
@@ -29,4 +30,4 @@
"tailwindcss": "^4",
"typescript": "^5"
}
-}
+}
\ No newline at end of file
diff --git a/public/.well-known/ai-plugin.json b/public/.well-known/ai-plugin.json
index fa93aef..926cb91 100644
--- a/public/.well-known/ai-plugin.json
+++ b/public/.well-known/ai-plugin.json
@@ -1,18 +1,18 @@
{
"schema_version": "v1",
- "name_for_human": "AOSSIE Webpage Starter",
- "name_for_model": "aossie_webpage_starter",
- "description_for_human": "Starter template for AOSSIE web portals showing internationalization and custom theme toggles.",
- "description_for_model": "Retrieve settings, theme configuration, and supported locales from the AOSSIE webpage starter.",
+ "name_for_human": "TODO Project name (AOSSIE Webpage Starter)",
+ "name_for_model": "todo_project_name (aossie_webpage_starter)",
+ "description_for_human": "TODO Project description (AOSSIE Webpage Starter)",
+ "description_for_model": "Retrieve settings, theme configuration, and supported locales from the TODO: Project (AOSSIE webpage starter).",
"auth": {
"type": "none"
},
"api": {
"type": "openapi",
- "url": "https://aossie.org/openapi.yaml",
+ "url": "https://TODO.project.aossie.org/openapi.yaml",
"is_user_authenticated": false
},
- "logo_url": "https://aossie.org/assets/icons/aossie_logo.svg",
+ "logo_url": "https://TODO.project.aossie.org/brand/icons/aossie_logo.svg",
"contact_email": "admin@aossie.org",
- "legal_info_url": "https://aossie.org/legal"
+ "legal_info_url": "https://TODO.project.aossie.org/legal"
}
diff --git a/public/.well-known/assetlinks.json b/public/.well-known/assetlinks.json
index 1cc9bc4..60c5bd9 100644
--- a/public/.well-known/assetlinks.json
+++ b/public/.well-known/assetlinks.json
@@ -3,9 +3,9 @@
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
- "package_name": "org.aossie.starter",
+ "package_name": "TODO:org.aossie.starter",
"sha256_cert_fingerprints": [
- "14:6D:E9:83:C5:E9:9D:03:7F:10:97:DF:A6:45:12:26:1F:EE:3A:84:14:6D:E9:83:C5:E9:9D:03:7F:10:97:00"
+ "TODO:14:6D:E9:83:C5:E9:9D:03:7F:10:97:DF:A6:45:12:26:1F:EE:3A:84:14:6D:E9:83:C5:E9:9D:03:7F:10:97:00"
]
}
}
diff --git a/public/assets/icons/aossie_logo.svg b/public/assets/icons/aossie_logo.svg
deleted file mode 100644
index 0fecb94..0000000
--- a/public/assets/icons/aossie_logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/assets/icons/favicon.ico b/public/assets/icons/favicon.ico
deleted file mode 100644
index 4a56c0adc8ecbb7bf557f3e80966cbce59e43909..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 16166
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
+
+
+
+
+
+
diff --git a/brand/favicon.ico b/public/brand/icons/favicon.ico
similarity index 100%
rename from brand/favicon.ico
rename to public/brand/icons/favicon.ico
diff --git a/public/brand/icons/stability_nexus_logo.svg b/public/brand/icons/stability_nexus_logo.svg
new file mode 100644
index 0000000..4b4349f
--- /dev/null
+++ b/public/brand/icons/stability_nexus_logo.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/file.svg b/public/file.svg
deleted file mode 100644
index 004145c..0000000
--- a/public/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/globe.svg b/public/globe.svg
deleted file mode 100644
index 567f17b..0000000
--- a/public/globe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/llms.txt b/public/llms.txt
index bf89df9..13b552e 100644
--- a/public/llms.txt
+++ b/public/llms.txt
@@ -1,6 +1,6 @@
-# AOSSIE Webpage Starter Template
+# TODO: Project Title (AOSSIE Webpage Starter Template)
-This repository is a high-performance webpage starter template built on **Next.js 16 (App Router)**, **React 19**, and **Tailwind CSS v4**. It is pre-configured with **next-intl** for internationalization (i18n) and **next-themes** for semantic dark/light theme tokens.
+This repository is a high-performance webpage built on **Next.js 16 (App Router)**, **React 19**, and **Tailwind CSS v4**. It is pre-configured with **next-intl** for internationalization (i18n) and **next-themes** for semantic dark/light theme tokens.
---
@@ -8,7 +8,7 @@ This repository is a high-performance webpage starter template built on **Next.j
- **`src/app/[locale]/`**: Localized dynamic route group. All pages and layouts live here.
- **`src/app/sitemap.ts`**: Dynamically generates localized sitemaps.
-- **`brand/`**: Repository branding folder containing the logo, favicon, and brand specifications (`Brand.md`).
+- **`public/brand/`**: Repository branding folder containing the logo, favicon, and brand specifications (`Brand.md`).
- **`src/config/languages.ts`**: Supported languages configuration list.
- **`src/i18n/`**: Configurations for translation lookups and custom navigation helpers.
- **`src/messages/`**: Directory containing translation catalogs (e.g., `en.json`, `hi.json`).
diff --git a/public/next.svg b/public/next.svg
deleted file mode 100644
index 5174b28..0000000
--- a/public/next.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/robots.txt b/public/robots.txt
index c066013..43d580f 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -4,5 +4,5 @@ Disallow: /api/
Disallow: /_vercel/
-# Replace the placeholder domain 'project.aossie.org' below with your actual project production domain.
+# Replace the placeholder domain TODO:'project.aossie.org' below with your actual project production domain.
Sitemap: https://project.aossie.org/sitemap.xml
diff --git a/public/stability.svg b/public/stability.svg
deleted file mode 100644
index cd2d3a7..0000000
--- a/public/stability.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/vercel.svg b/public/vercel.svg
deleted file mode 100644
index 7705396..0000000
--- a/public/vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/window.svg b/public/window.svg
deleted file mode 100644
index b2b2a44..0000000
--- a/public/window.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/app/[locale]/error.tsx b/src/app/[locale]/error.tsx
index 30911e6..ebb50b3 100644
--- a/src/app/[locale]/error.tsx
+++ b/src/app/[locale]/error.tsx
@@ -47,6 +47,7 @@ export default function ErrorBoundary({
diff --git a/src/app/[locale]/globals.css b/src/app/[locale]/globals.css
index aaa83ba..41cc1c4 100644
--- a/src/app/[locale]/globals.css
+++ b/src/app/[locale]/globals.css
@@ -27,7 +27,11 @@
--color-status-neutral-bg: var(--status-neutral-bg);
--color-status-neutral-text: var(--status-neutral-text);
- --font-sans: var(--font-inter), ui-sans-serif, system-ui, sans-serif;
+ --color-icon-sun: var(--icon-sun);
+ --color-icon-moon: var(--icon-moon);
+ --color-icon-system: var(--icon-system);
+
+ --font-sans: var(--font-inter), var(--font-devanagari), ui-sans-serif, system-ui, sans-serif;
}
/* --- LIGHT MODE (Default) --- */
@@ -55,6 +59,10 @@
--status-error-text: #dc2626;
--status-neutral-bg: #f4f4f5;
--status-neutral-text: #52525b;
+
+ --icon-sun: #f59e0b;
+ --icon-moon: #818cf8;
+ --icon-system: #71717a;
}
/* --- DARK MODE --- */
@@ -82,6 +90,10 @@
--status-error-text: #f87171;
--status-neutral-bg: #27272a;
--status-neutral-text: #a1a1aa;
+
+ --icon-sun: #fbbf24;
+ --icon-moon: #818cf8;
+ --icon-system: #a1a1aa;
}
diff --git a/src/app/[locale]/layout.tsx b/src/app/[locale]/layout.tsx
index ca2744f..93091a5 100644
--- a/src/app/[locale]/layout.tsx
+++ b/src/app/[locale]/layout.tsx
@@ -1,11 +1,12 @@
import type { Metadata } from "next";
-import { Inter } from "next/font/google";
-import { routing } from "../../i18n/routing";
+import { Inter, Noto_Sans_Devanagari } from "next/font/google";
+import { routing } from "@/i18n/routing";
+import { generateLocaleMetadata } from "@/i18n/metadata";
import { notFound } from "next/navigation";
import { getMessages } from "next-intl/server";
import { NextIntlClientProvider } from "next-intl";
-import { ThemeProvider } from "../../components/providers/theme-provider";
-import { LenisProvider } from "../../components/providers/lenis-provider";
+import { ThemeProvider } from "@/components/providers/theme-provider";
+import { LenisProvider } from "@/components/providers/lenis-provider";
import "./globals.css";
const inter = Inter({
@@ -13,13 +14,19 @@ const inter = Inter({
subsets: ["latin"],
});
-export const metadata: Metadata = {
- title: "Aossie Webpage Starter",
- description: "A multi-lingual starter template for Aossie organizations.",
- icons: {
- icon: "/assets/icons/favicon.ico",
- },
-};
+const devanagari = Noto_Sans_Devanagari({
+ variable: "--font-devanagari",
+ subsets: ["devanagari"],
+});
+
+export async function generateMetadata({
+ params,
+}: {
+ params: Promise<{ locale: string }>;
+}): Promise {
+ const { locale } = await params;
+ return generateLocaleMetadata(locale, "Home");
+}
export default async function RootLayout({
children,
@@ -42,7 +49,7 @@ export default async function RootLayout({
return (
diff --git a/src/app/[locale]/not-found.tsx b/src/app/[locale]/not-found.tsx
index cb5e38b..ee4746f 100644
--- a/src/app/[locale]/not-found.tsx
+++ b/src/app/[locale]/not-found.tsx
@@ -1,5 +1,5 @@
import { useTranslations } from "next-intl";
-import { Link } from "../../i18n/navigation";
+import { Link } from "@/i18n/navigation";
export default function NotFound() {
const t = useTranslations("NotFound");
diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx
index 03065a9..a0be971 100644
--- a/src/app/[locale]/page.tsx
+++ b/src/app/[locale]/page.tsx
@@ -4,8 +4,8 @@ import Image from "next/image";
import Script from "next/script";
import { useTranslations } from "next-intl";
import { use } from "react";
-import LanguageSwitcher from "../../components/LanguageSwitcher";
-import ThemeToggle from "../../components/ThemeToggle";
+import LanguageSwitcher from "@/components/LanguageSwitcher";
+import ThemeToggle from "@/components/ThemeToggle";
export default function Home({
params,
@@ -19,13 +19,13 @@ export default function Home({
const jsonLd = {
"@context": "https://schema.org",
"@type": "WebPage",
- "name": "AOSSIE Webpage Starter",
- "description": t("metaDescription"),
+ "name": t("TODO:heading"),
+ "description": t("TODO:metaDescription"),
"publisher": {
"@type": "Organization",
- "name": "AOSSIE",
- "url": "https://aossie.org",
- "logo": "https://aossie.org/assets/icons/aossie_logo.svg",
+ "name": "TODO:AOSSIE",
+ "url": "https://TODO.project.aossie.org",
+ "logo": "https://TODO.project.aossie.org/brand/icons/aossie_logo.svg",
},
"inLanguage": locale,
};
@@ -42,7 +42,7 @@ export default function Home({
Date: Fri, 31 Jul 2026 09:43:42 +0530
Subject: [PATCH 2/8] fix: addressing coderabbitai's suggestions
---
AGENTS.md | 2 +-
COPYRIGHT.md | 1 +
README.md | 9 ++++++--
public/brand/Brand.md | 45 +++++++++++++++++++++++++++----------
src/app/[locale]/layout.tsx | 3 +++
src/app/[locale]/page.tsx | 17 +++++---------
6 files changed, 51 insertions(+), 26 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
index a429bc3..1296f0b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -6,7 +6,7 @@ This version has breaking changes — APIs, conventions, and file structure may
# TODO: Project Title
-TODO: Project specific context and directives for AI agents.
+TODO: Project-specific context and directives for AI agents.
## 🛠️ Stack & Commands
diff --git a/COPYRIGHT.md b/COPYRIGHT.md
index 471ccb9..07cca28 100644
--- a/COPYRIGHT.md
+++ b/COPYRIGHT.md
@@ -1,3 +1,4 @@
+# Copyright
Copyright © 2026 The Stable Order
All rights reserved.
diff --git a/README.md b/README.md
index b9035af..15b2083 100644
--- a/README.md
+++ b/README.md
@@ -97,7 +97,7 @@ In the checklist below, mark the items that have been completed for your project
- **Next.js 16 & React 19:** Utilizing the latest Server Components, Client Actions, and async routing paradigms.
- **Tailwind CSS v4:** Modern utility-first styling with native CSS variables and streamlined postcss integrations.
-- **Dual Theme System:** Flash-free light, dark, and system preferred themes using `next-themes` and Tailwind CSS v4 custom variants.
+- **Dual Theme System:** Flash-free light, dark, and system-preferred themes using `next-themes` and Tailwind CSS v4 custom variants.
- **Robust i18n & l10n:** Deeply integrated multi-language support:
- Automatic locale detection based on browser preferences.
- Subpath routing (e.g., `/hi` for Hindi, and unprefixed `/` for English as default) with clean `as-needed` URL prefixing.
@@ -341,24 +341,29 @@ npm run start
When bootstrapping a new project from this starter repository, complete the following `TODO` setup checklist to align the repository with your project's branding, metadata, AI agent guidelines, and hosting configurations:
### 1. Project Identity & Header Details
+
- **Project Title & Logo ([`README.md`](README.md))**: Update the main project header logo (`public/todo-project-logo.svg`), title `TODO: Project Name `, project description, feature list, and tech stack.
- **AI Agent Context ([`AGENTS.md`](AGENTS.md))**: Replace `# TODO: Project Title` and add project-specific directives and rules for AI coding agents.
- **LLM Manifest ([`public/llms.txt`](public/llms.txt))**: Update `# TODO: Project Title` in the root LLM crawler policy.
- **Community & Social Links ([`Contributors.md`](Contributors.md))**: Replace the `[TODO Channel](TODO)` placeholder with your project's Discord, Telegram, or chat channel link.
### 2. Domain Names & Search Engine Crawlers
+
- **Sitemap Generator ([`src/app/sitemap.ts`](src/app/sitemap.ts))**: Replace the default fallback domain `https://project.aossie.org` with your project's production domain in the source code or set the `NEXT_PUBLIC_SITE_URL` environment variable at build time (e.g., in `.github/workflows/nextjs.yml` or build pipeline settings).
-- **Search Crawler Rules ([`public/robots.txt`](public/robots.txt))**: Replace the sitemap URL placeholder domain `TODO:'project.aossie.org'` with your actual production domain.
+- **Search Crawler Rules ([`public/robots.txt`](public/robots.txt))**: Replace the sitemap URL placeholder domain `TODO 'project.aossie.org'` with your actual production domain.
### 3. Branding Guidelines & Assets
+
- **Logo & Favicons ([`public/brand/icons/`](public/brand/icons/))**: Replace `aossie_logo.svg` and `favicon.ico` with your organization's custom logos.
- **Brand Documentation ([`public/brand/Brand.md`](public/brand/Brand.md))**: Document your custom color hex codes, typography selections, and asset paths here to guide future developers and AI coding agents.
### 4. SEO & i18n Localization Metadata
+
- **Schema.org JSON-LD ([`src/app/[locale]/page.tsx`](src/app/[locale]/page.tsx))**: Locate the `jsonLd` object inside the `Home` component. Update the `publisher.name`, `publisher.url`, and `publisher.logo` fields from `TODO` placeholders to your project metadata.
- **Translation Catalogs ([`src/messages/en.json`](src/messages/en.json), [`src/messages/hi.json`](src/messages/hi.json))**: Update the `heading`, `metaTitle`, and `metaDescription` keys with your project's localized titles and descriptions.
### 5. Mobile & AI Platform Configurations
+
- **Android App Links ([`public/.well-known/assetlinks.json`](public/.well-known/assetlinks.json))**: Update the package name `TODO:org.aossie.starter` and insert your Android application certificate SHA-256 fingerprint (`TODO:...`).
- **AI Agent Plugins ([`public/.well-known/ai-plugin.json`](public/.well-known/ai-plugin.json))**: Replace all `TODO` placeholders for `name_for_human`, `name_for_model`, `description_for_human`, `description_for_model`, host URLs, contact emails, and legal info links.
diff --git a/public/brand/Brand.md b/public/brand/Brand.md
index fd538fb..a8bc235 100644
--- a/public/brand/Brand.md
+++ b/public/brand/Brand.md
@@ -1,32 +1,36 @@
-# AOSSIE Brand Guidelines
+# Brand Guidelines
-This document details the visual identity guidelines for **AOSSIE** (Australian Open Source Software Innovation and Education).
+This document details the visual identity guidelines for **TODO: Project Name** as well as the parent **AOSSIE** organization.
---
-## 🎨 Color Palette
+## 🎨 TODO: Project Color Palette
-The AOSSIE color scheme is inspired by Australia's national colors and reflects the organization's roots.
+Define your project's custom color palette below:
| Color Name | Color Sample | HEX Code | RGB Code | Role |
| :--- | :--- | :--- | :--- | :--- |
-| **Golden Wallet** | 🟡 | `#FFCD00` | `rgb(255, 205, 0)` | Primary Brand Color |
-| **Baggy Green** | 🟢 | `#00843D` | `rgb(0, 132, 61)` | Secondary Brand Color |
+| **TODO: Primary Color** | 🟦 | `#000000` | `rgb(0, 0, 0)` | Primary Project Color |
+| **TODO: Secondary Color** | 🟩 | `#000000` | `rgb(0, 0, 0)` | Secondary Project Color |
| **Neutral Dark** | ⬛ | `#121212` | `rgb(18, 18, 18)` | Dark Layouts & Text |
| **Neutral Light** | ⬜ | `#FFFFFF` | `rgb(255, 255, 255)` | Light Layouts & Text |
| **Neutral Muted** | 🔘 | `#7A7A7A` | `rgb(122, 122, 122)` | Borders & Muted Text |
---
-## 👁️ Visual Assets
+## 👁️ TODO: Project Visual Assets
+
+### 1. Project Logo
-### 1. Brand Logo
-The official vector logo is stored in the repository in **SVG** format:
-- **Branding Asset:** [aossie_logo.svg](icons/aossie_logo.svg)
+The official vector logo for this project:
+
+- **Branding Asset:** [todo-project-logo.svg](icons/aossie_logo.svg)
- **Web App Asset Path:** `/brand/icons/aossie_logo.svg`
-### 2. Favicons & Icons
-The standard web browser tab icon is stored as a multi-resolution ICO file:
+### 2. Project Favicon & Icons
+
+The browser tab favicon for this project:
+
- **Branding Asset:** [favicon.ico](icons/favicon.ico)
- **Web App Asset Path:** `/brand/icons/favicon.ico`
@@ -38,3 +42,20 @@ The standard web browser tab icon is stored as a multi-resolution ICO file:
- **Fallback Stack:** `ui-sans-serif, system-ui, sans-serif`
- **Configuration:** Set globally via Tailwind CSS v4 custom theme bindings inside [`globals.css`](src/app/[locale]/globals.css) and loaded asynchronously in the root layout via Next.js Google Font optimizer.
+---
+
+## 🏛️ AOSSIE Organization Branding
+
+The parent organization (AOSSIE - Australian Open Source Software Innovation and Education) branding guidelines:
+
+### Color Palette
+
+| Color Name | Color Sample | HEX Code | RGB Code | Role |
+| :--- | :--- | :--- | :--- | :--- |
+| **Golden Wallet** | 🟡 | `#FFCD00` | `rgb(255, 205, 0)` | Primary Brand Color |
+| **Baggy Green** | 🟢 | `#00843D` | `rgb(0, 132, 61)` | Secondary Brand Color |
+
+### Organization Assets
+
+- **AOSSIE Logo:** [aossie_logo.svg](icons/aossie_logo.svg) (`/brand/icons/aossie_logo.svg`)
+- **Stability Nexus Logo:** [stability_nexus_logo.svg](icons/stability_nexus_logo.svg) (`/brand/icons/stability_nexus_logo.svg`)
diff --git a/src/app/[locale]/layout.tsx b/src/app/[locale]/layout.tsx
index 93091a5..5424d95 100644
--- a/src/app/[locale]/layout.tsx
+++ b/src/app/[locale]/layout.tsx
@@ -25,6 +25,9 @@ export async function generateMetadata({
params: Promise<{ locale: string }>;
}): Promise {
const { locale } = await params;
+ if (!routing.locales.includes(locale as (typeof routing.locales)[number])) {
+ notFound();
+ }
return generateLocaleMetadata(locale, "Home");
}
diff --git a/src/app/[locale]/page.tsx b/src/app/[locale]/page.tsx
index a0be971..6d32800 100644
--- a/src/app/[locale]/page.tsx
+++ b/src/app/[locale]/page.tsx
@@ -1,26 +1,23 @@
-"use client";
-
import Image from "next/image";
import Script from "next/script";
-import { useTranslations } from "next-intl";
-import { use } from "react";
+import { getTranslations } from "next-intl/server";
import LanguageSwitcher from "@/components/LanguageSwitcher";
import ThemeToggle from "@/components/ThemeToggle";
-export default function Home({
+export default async function Home({
params,
}: {
params: Promise<{ locale: string }>;
}) {
- const { locale } = use(params);
- const t = useTranslations("Home");
+ const { locale } = await params;
+ const t = await getTranslations({ locale, namespace: "Home" });
// Schema.org Structured Data
const jsonLd = {
"@context": "https://schema.org",
"@type": "WebPage",
- "name": t("TODO:heading"),
- "description": t("TODO:metaDescription"),
+ "name": t("heading"),
+ "description": t("metaDescription"),
"publisher": {
"@type": "Organization",
"name": "TODO:AOSSIE",
@@ -62,5 +59,3 @@ export default function Home({
);
}
-
-
From 91e5595bcf0432f52e5c3d5fd601d59693d465dd Mon Sep 17 00:00:00 2001
From: Saksham Jain
Date: Fri, 31 Jul 2026 09:45:31 +0530
Subject: [PATCH 3/8] fix: addressing coderabbitai's suggestions and json
update
---
package-lock.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/package-lock.json b/package-lock.json
index fc0019b..b441a81 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -25,6 +25,9 @@
"eslint-config-next": "16.2.11",
"tailwindcss": "^4",
"typescript": "^5"
+ },
+ "engines": {
+ "node": ">=20.9.0"
}
},
"node_modules/@alloc/quick-lru": {
From a4bce0366e4c96589dc0811d54b8b826a1eb513b Mon Sep 17 00:00:00 2001
From: Saksham Jain
Date: Fri, 31 Jul 2026 09:48:29 +0530
Subject: [PATCH 4/8] fix(ci): update actions/setup-node ref to full
40-character commit SHA
---
.github/workflows/ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 173e7c9..3ae5a88 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Setup Node.js
- uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0 # v4.0.3
+ uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
From e602cd15b628329386f4f5fa86a8a5967694925f Mon Sep 17 00:00:00 2001
From: Saksham Jain <113931310+reach2saksham@users.noreply.github.com>
Date: Fri, 31 Jul 2026 09:59:49 +0530
Subject: [PATCH 5/8] Refactor branding colors and asset links in Brand.md
Updated color entries and paths for branding assets.
---
public/brand/Brand.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/public/brand/Brand.md b/public/brand/Brand.md
index a8bc235..c603870 100644
--- a/public/brand/Brand.md
+++ b/public/brand/Brand.md
@@ -12,9 +12,6 @@ Define your project's custom color palette below:
| :--- | :--- | :--- | :--- | :--- |
| **TODO: Primary Color** | 🟦 | `#000000` | `rgb(0, 0, 0)` | Primary Project Color |
| **TODO: Secondary Color** | 🟩 | `#000000` | `rgb(0, 0, 0)` | Secondary Project Color |
-| **Neutral Dark** | ⬛ | `#121212` | `rgb(18, 18, 18)` | Dark Layouts & Text |
-| **Neutral Light** | ⬜ | `#FFFFFF` | `rgb(255, 255, 255)` | Light Layouts & Text |
-| **Neutral Muted** | 🔘 | `#7A7A7A` | `rgb(122, 122, 122)` | Borders & Muted Text |
---
@@ -24,14 +21,14 @@ Define your project's custom color palette below:
The official vector logo for this project:
-- **Branding Asset:** [todo-project-logo.svg](icons/aossie_logo.svg)
+- **Branding Asset:** [todo-project-logo.svg](brand/icons/todo_project_logo.svg)
- **Web App Asset Path:** `/brand/icons/aossie_logo.svg`
### 2. Project Favicon & Icons
The browser tab favicon for this project:
-- **Branding Asset:** [favicon.ico](icons/favicon.ico)
+- **Branding Asset:** [todo-project-favicon.ico](brand/icons/todo_project_favicon.ico)
- **Web App Asset Path:** `/brand/icons/favicon.ico`
---
@@ -54,8 +51,11 @@ The parent organization (AOSSIE - Australian Open Source Software Innovation and
| :--- | :--- | :--- | :--- | :--- |
| **Golden Wallet** | 🟡 | `#FFCD00` | `rgb(255, 205, 0)` | Primary Brand Color |
| **Baggy Green** | 🟢 | `#00843D` | `rgb(0, 132, 61)` | Secondary Brand Color |
+| **Neutral Dark** | ⬛ | `#121212` | `rgb(18, 18, 18)` | Dark Layouts & Text |
+| **Neutral Light** | ⬜ | `#FFFFFF` | `rgb(255, 255, 255)` | Light Layouts & Text |
+| **Neutral Muted** | 🔘 | `#7A7A7A` | `rgb(122, 122, 122)` | Borders & Muted Text |
### Organization Assets
-- **AOSSIE Logo:** [aossie_logo.svg](icons/aossie_logo.svg) (`/brand/icons/aossie_logo.svg`)
-- **Stability Nexus Logo:** [stability_nexus_logo.svg](icons/stability_nexus_logo.svg) (`/brand/icons/stability_nexus_logo.svg`)
+- **AOSSIE Logo:** [aossie_logo.svg](brand/icons/aossie_logo.svg) (`/brand/icons/aossie_logo.svg`)
+- **Stability Nexus Logo:** [stability_nexus_logo.svg](brand/icons/stability_nexus_logo.svg) (`/brand/icons/stability_nexus_logo.svg`)
From 948a822d38b63bb32cebca4ce6a082463005b7c0 Mon Sep 17 00:00:00 2001
From: Saksham Jain
Date: Fri, 31 Jul 2026 11:04:44 +0530
Subject: [PATCH 6/8] fix: addressing coderabbitai suggestions
---
README.md | 2 +-
public/brand/Brand.md | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index 15b2083..30aee63 100644
--- a/README.md
+++ b/README.md
@@ -342,7 +342,7 @@ When bootstrapping a new project from this starter repository, complete the foll
### 1. Project Identity & Header Details
-- **Project Title & Logo ([`README.md`](README.md))**: Update the main project header logo (`public/todo-project-logo.svg`), title `TODO: Project Name `, project description, feature list, and tech stack.
+- **Project Title & Logo ([`README.md`](README.md))**: Update the main project header logo (`public/brand/icons/todo-project-logo.svg`), title `TODO: Project Name `, project description, feature list, and tech stack.
- **AI Agent Context ([`AGENTS.md`](AGENTS.md))**: Replace `# TODO: Project Title` and add project-specific directives and rules for AI coding agents.
- **LLM Manifest ([`public/llms.txt`](public/llms.txt))**: Update `# TODO: Project Title` in the root LLM crawler policy.
- **Community & Social Links ([`Contributors.md`](Contributors.md))**: Replace the `[TODO Channel](TODO)` placeholder with your project's Discord, Telegram, or chat channel link.
diff --git a/public/brand/Brand.md b/public/brand/Brand.md
index c603870..5083492 100644
--- a/public/brand/Brand.md
+++ b/public/brand/Brand.md
@@ -21,8 +21,8 @@ Define your project's custom color palette below:
The official vector logo for this project:
-- **Branding Asset:** [todo-project-logo.svg](brand/icons/todo_project_logo.svg)
-- **Web App Asset Path:** `/brand/icons/aossie_logo.svg`
+- **Branding Asset:** [todo-project-logo.svg](icons/todo-project-logo.svg)
+- **Web App Asset Path:** `/brand/icons/todo-project-logo.svg`
### 2. Project Favicon & Icons
From aea087064dc34fd193b994374315cf3eedf6c86e Mon Sep 17 00:00:00 2001
From: Saksham Jain
Date: Fri, 7 Aug 2026 17:19:17 +0530
Subject: [PATCH 7/8] feat(export): configure pure static export and
client-side page setup for GitHub Pages
---
AGENTS.md | 1 +
Contributors.md | 15 ----------
MAINTAINERS.md | 23 +++++++++++++++
README.md | 47 +++++++++++++-----------------
next.config.ts | 5 ++++
public/.well-known/ai-plugin.json | 6 ++--
public/favicon.ico | Bin 0 -> 16166 bytes
public/llms.txt | 3 +-
public/robots.txt | 2 +-
src/app/[locale]/layout.tsx | 11 +++++--
src/app/[locale]/page.tsx | 13 +++++----
src/app/page.tsx | 6 ++++
src/app/sitemap.ts | 4 ++-
src/i18n/metadata.ts | 5 +++-
src/proxy.ts | 20 -------------
15 files changed, 86 insertions(+), 75 deletions(-)
delete mode 100644 Contributors.md
create mode 100644 MAINTAINERS.md
create mode 100644 public/favicon.ico
create mode 100644 src/app/page.tsx
delete mode 100644 src/proxy.ts
diff --git a/AGENTS.md b/AGENTS.md
index 1296f0b..24be58b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -28,6 +28,7 @@ TODO: Project-specific context and directives for AI agents.
- **Dynamic segment:** All localized pages and layouts must be nested inside [`src/app/[locale]/`](src/app/[locale]/).
- **Awaiting params:** Layout and Page `params` props are Promises in Next.js 15/16. Always `await params` before accessing `locale`.
+- **Static Export:** Call `setRequestLocale(locale)` in layout and page server components, and export `generateStaticParams()` to support static HTML export (`output: 'export'`).
- **Navigation:** Never import `Link`, `useRouter`, or `usePathname` from standard `next/link` or `next/navigation`. Always import them from local configuration helpers in [`src/i18n/navigation.ts`](src/i18n/navigation.ts).
---
diff --git a/Contributors.md b/Contributors.md
deleted file mode 100644
index 54f2084..0000000
--- a/Contributors.md
+++ /dev/null
@@ -1,15 +0,0 @@
-This file contains information about people who contribute to this project.
-
-Please do not contact these people directly.
-Instead, join our [Discord AOSSIE](https://discord.gg/hjUhu33uAn) or join our [Discord Stability Nexus](https://discord.gg/fuuWX4AbJt) and communicate about
-this project in the [TODO Channel](TODO).
-
-## Contributors
-
-By having yourself in the table below, all your contributions to this project
-are made under the terms of the [Developer Certificate of Origin](DCO.md).
-
-| Name | Github Username | Discord Username | Email Address |
-| -------------------------------- | ------------------ | ------------------ | ---------------------------- |
-| Bruno Woltzenlogel Paleo | @Zahnentferner | @b.wp | zahnentferner@gmail.com |
-| Saksham Jain | @reach2saksham | @theonlypro | reach2saksham2004@gmail.com |
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..8c0e0a5
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,23 @@
+# Maintainers, Mentors and Ideators
+
+This document lists the individuals fulfilling the key roles of [Maintainer](https://github.com/AOSSIE-Org/Info/blob/main/Roles/Maintainer.md), [Mentor](https://github.com/AOSSIE-Org/Info/blob/main/Roles/Mentors.md) and [Ideator](https://github.com/AOSSIE-Org/Info/blob/main/Roles/Ideator.md) for this repository, in accordance with [AOSSIE's Role Definitions](https://github.com/AOSSIE-Org/Info/tree/main/Roles).
+
+---
+
+## Ideators
+
+| Name | GitHub Username | Discord Username | Project / Feature Idea | Area / Focus | Proposal / Discussion Link |
+| ---- | --------------- | ---------------- | ------------------------------- | -------------------- | ------------------------------------------- |
+| TODO | @username | @discord_user | Context-First AI Infrastructure | AI Workflow & Skills | [Discussion](https://github.com/AOSSIE-Org) |
+
+## Mentors
+
+| Name | GitHub Username | Discord Username | Area / Focus |
+| ---- | --------------- | ---------------- | ----------------------------------- |
+| TODO | @username | @discord_user | whole Project Guidance & PR Reviews |
+
+## Maintainers
+
+| Name | GitHub Username | Discord Username | Area / Focus |
+| ---- | --------------- | ---------------- | -------------------------------- |
+| TODO | @username | @discord_user | Repository Maintenance & Merging |
\ No newline at end of file
diff --git a/README.md b/README.md
index 30aee63..d49089a 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
@@ -13,7 +13,7 @@
-[](https://aossie.org/)
+[AOSSIE-TODO:Webpage-228B22?style=for-the-badge&labelColor=FFC517)](https://TODO:project.aossie.org/)
@@ -21,7 +21,7 @@
-
+
@@ -29,20 +29,22 @@
-
+
-
+
-
+
-
+
+
-
+
+
@@ -52,7 +54,7 @@
TODO: Project Name (AOSSIE Webpage Starter)
-[TODO](https://TODO.aossie.org/) is a ... TODO: Project Description.
+TODO: Project Description.
A high-performance, developer-friendly webpage built on **Next.js 16 (App Router)**, **React 19**, **Tailwind CSS v4**, and pre-configured for **Internationalization (i18n)** and **Localization (l10n)** using **next-intl**.
@@ -140,6 +142,7 @@ Here is a breakdown of the key i18n directories and files:
│ │ ├── en.json # English translation dictionary
│ │ └── hi.json # Hindi translation dictionary
│ ├── app/
+│ │ ├── page.tsx # Root page redirecting to default locale for static export
│ │ ├── sitemap.ts # Dynamically generated localized sitemaps
│ │ └── [locale]/ # Localized route group
│ │ ├── layout.tsx # Multi-lingual layout injecting client context & translations
@@ -147,13 +150,12 @@ Here is a breakdown of the key i18n directories and files:
│ │ ├── globals.css # Global styles for the app segment
│ │ ├── error.tsx # Localized Error Boundary page fallback
│ │ └── not-found.tsx # Localized 404 page fallback
-│ ├── components/
-│ │ ├── LanguageSwitcher.tsx # Dropdown element to switch interface locales interactively
-│ │ ├── ThemeToggle.tsx # Multi-state theme switch with micro-animations
-│ │ └── providers/
-│ │ ├── theme-provider.tsx # Next-themes client wrapper component
-│ │ └── lenis-provider.tsx # Lenis smooth scrolling provider wrapper
-│ └── proxy.ts # Next.js 16 Proxy Middleware for route and locale redirection
+│ └── components/
+│ ├── LanguageSwitcher.tsx # Dropdown element to switch interface locales interactively
+│ ├── ThemeToggle.tsx # Multi-state theme switch with micro-animations
+│ └── providers/
+│ ├── theme-provider.tsx # Next-themes client wrapper component
+│ └── lenis-provider.tsx # Lenis smooth scrolling provider wrapper
├── .coderabbit.yml # Automated AI Code Review configuration
├── COPYRIGHT.md # Copyright terms
├── Contributors.md # Project contributors list
@@ -318,21 +320,14 @@ npm run dev
Open [http://localhost:3000](http://localhost:3000) to view it. The application will automatically detect your browser's language preferences and route you to `/hi` for Hindi or `/` for English (the default locale, which omits the prefix).
-### Building for Production
+### Building for Production (Static Export)
-Compile and optimize the project:
+Compile and export the project into static HTML/CSS/JS assets for hosting on GitHub Pages:
```bash
npm run build
```
-This compiles optimized static pages under the `/[locale]` path and checks all TypeScript configurations.
-
-### Running in Production
-
-Start the optimized server:
-```bash
-npm run start
-```
+This generates an optimized static export in the `./out` directory, fully configured for client-side rendering and hosting on GitHub Pages.
---
diff --git a/next.config.ts b/next.config.ts
index 97700d8..33f8bbf 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -2,6 +2,10 @@ import type { NextConfig } from "next";
import path from "path";
const nextConfig: NextConfig = {
+ output: "export",
+ images: {
+ unoptimized: true,
+ },
webpack: (config) => {
config.resolve.alias["next-intl/config"] = path.resolve(
process.cwd(),
@@ -10,6 +14,7 @@ const nextConfig: NextConfig = {
return config;
},
turbopack: {
+ root: path.resolve(process.cwd()),
resolveAlias: {
"next-intl/config": "./src/i18n/request.ts",
},
diff --git a/public/.well-known/ai-plugin.json b/public/.well-known/ai-plugin.json
index 926cb91..0301ffd 100644
--- a/public/.well-known/ai-plugin.json
+++ b/public/.well-known/ai-plugin.json
@@ -9,10 +9,10 @@
},
"api": {
"type": "openapi",
- "url": "https://TODO.project.aossie.org/openapi.yaml",
+ "url": "https://TODO:project.aossie.org/openapi.yaml",
"is_user_authenticated": false
},
- "logo_url": "https://TODO.project.aossie.org/brand/icons/aossie_logo.svg",
+ "logo_url": "https://TODO:project.aossie.org/brand/icons/aossie_logo.svg",
"contact_email": "admin@aossie.org",
- "legal_info_url": "https://TODO.project.aossie.org/legal"
+ "legal_info_url": "https://TODO:project.aossie.org/legal"
}
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..4a56c0adc8ecbb7bf557f3e80966cbce59e43909
GIT binary patch
literal 16166
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 ({ locale }));
+}
+
export async function generateMetadata({
params,
}: {
@@ -41,13 +45,16 @@ export default async function RootLayout({
// Await params since PageProps and LayoutProps are Promises in Next.js 15/16
const { locale } = await params;
+ // Enable static rendering
+ setRequestLocale(locale);
+
// Validate that the incoming `locale` is supported
if (!routing.locales.includes(locale as (typeof routing.locales)[number])) {
notFound();
}
// Provide messages to Client Components
- const messages = await getMessages();
+ const messages = await getMessages({ locale });
return (
;
}) {
const { locale } = await params;
+
+ // Enable static rendering
+ setRequestLocale(locale);
+
const t = await getTranslations({ locale, namespace: "Home" });
// Schema.org Structured Data
@@ -21,8 +24,8 @@ export default async function Home({
"publisher": {
"@type": "Organization",
"name": "TODO:AOSSIE",
- "url": "https://TODO.project.aossie.org",
- "logo": "https://TODO.project.aossie.org/brand/icons/aossie_logo.svg",
+ "url": "https://TODO:project.aossie.org",
+ "logo": "https://TODO:project.aossie.org/brand/icons/aossie_logo.svg",
},
"inLanguage": locale,
};
@@ -30,7 +33,7 @@ export default async function Home({
return (
{/* Schema.org JSON-LD Structured Data */}
-