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..3ae5a88 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@1e60f620b9541d16bece96c5465dc8ee9832be0b # 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..24be58b 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
@@ -28,6 +28,7 @@ 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).
---
@@ -35,5 +36,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..07cca28 100644
--- a/COPYRIGHT.md
+++ b/COPYRIGHT.md
@@ -1,4 +1,5 @@
-Copyright © 2025 The Stable Order
+# Copyright
+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
deleted file mode 100644
index e0e23b1..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](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 |
-| TODO | TODO | TODO | TODO |
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 306284f..dac027b 100644
--- a/README.md
+++ b/README.md
@@ -3,8 +3,8 @@
@@ -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,15 +54,13 @@
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 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 +81,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 +95,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.
+- **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 `/en` for English as default) with clean 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,37 +119,43 @@ 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
│ │ └── hi.json # Hindi translation dictionary
│ ├── app/
-│ │ ├── sitemap.ts # Dynamically generated localized sitemaps
+│ │ ├── page.tsx # Root page redirecting to default locale (/en) for static export
+│ │ ├── sitemap.ts # Statically generated localized sitemaps
│ │ └── [locale]/ # Localized route group
│ │ ├── layout.tsx # Multi-lingual layout injecting client context & translations
│ │ ├── page.tsx # Localized Landing Page ("use client")
│ │ ├── 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
@@ -245,6 +251,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,45 +318,50 @@ 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 `/en` for English (the default locale).
+
+### Building for Production (Static Export)
-### Building for Production
+Compile and export the project into static HTML/CSS/JS assets for hosting on GitHub Pages:
-Compile and optimize the project:
```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.
---
## ⚙️ 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/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.
+
+### 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.
+
+### 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.
-### 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.
+### 4. SEO & i18n Localization Metadata
-### 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.
+- **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.
-### 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.
+### 5. Mobile & AI Platform Configurations
-### 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.
+- **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 +378,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/Brand.md b/brand/Brand.md
deleted file mode 100644
index db55752..0000000
--- a/brand/Brand.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# AOSSIE Brand Guidelines
-
-This document details the visual identity guidelines for **AOSSIE** (Australian Open Source Software Innovation and Education).
-
----
-
-## 🎨 Color Palette
-
-The AOSSIE color scheme is inspired by Australia's national colors and reflects the organization's roots.
-
-| 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 |
-| **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
-
-### 1. Brand Logo
-The official vector logo is stored in the repository in **SVG** format:
-- **Project Folder:** [logo.svg](brand/logo.svg)
-- **Web App Asset:** [aossie_logo.svg](public/assets/icons/aossie_logo.svg)
-
-### 2. Favicons & Icons
-The standard web browser tab icon is stored as a multi-resolution ICO file:
-- **Project Folder:** [favicon.ico](brand/favicon.ico)
-- **Web App Asset:** [favicon.ico](public/assets/icons/favicon.ico)
-
----
-
-## ✍️ Typography
-
-- **Default Font Family:** **Inter**
-- **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.
-
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/next.config.ts b/next.config.ts
index 97700d8..ef8ec19 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -2,14 +2,12 @@ import type { NextConfig } from "next";
import path from "path";
const nextConfig: NextConfig = {
- webpack: (config) => {
- config.resolve.alias["next-intl/config"] = path.resolve(
- process.cwd(),
- "./src/i18n/request.ts"
- );
- return config;
+ output: "export",
+ images: {
+ unoptimized: true,
},
turbopack: {
+ root: path.resolve(process.cwd()),
resolveAlias: {
"next-intl/config": "./src/i18n/request.ts",
},
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": {
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..0301ffd 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/brand/Brand.md b/public/brand/Brand.md
new file mode 100644
index 0000000..5083492
--- /dev/null
+++ b/public/brand/Brand.md
@@ -0,0 +1,61 @@
+# Brand Guidelines
+
+This document details the visual identity guidelines for **TODO: Project Name** as well as the parent **AOSSIE** organization.
+
+---
+
+## 🎨 TODO: Project Color Palette
+
+Define your project's custom color palette below:
+
+| Color Name | Color Sample | HEX Code | RGB Code | Role |
+| :--- | :--- | :--- | :--- | :--- |
+| **TODO: Primary Color** | 🟦 | `#000000` | `rgb(0, 0, 0)` | Primary Project Color |
+| **TODO: Secondary Color** | 🟩 | `#000000` | `rgb(0, 0, 0)` | Secondary Project Color |
+
+---
+
+## 👁️ TODO: Project Visual Assets
+
+### 1. Project Logo
+
+The official vector logo for this project:
+
+- **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
+
+The browser tab favicon for this project:
+
+- **Branding Asset:** [todo-project-favicon.ico](brand/icons/todo_project_favicon.ico)
+- **Web App Asset Path:** `/brand/icons/favicon.ico`
+
+---
+
+## ✍️ Typography
+
+- **Default Font Family:** **Inter**
+- **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 |
+| **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](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`)
diff --git a/public/brand/icons/aossie_logo.svg b/public/brand/icons/aossie_logo.svg
new file mode 100644
index 0000000..2b66763
--- /dev/null
+++ b/public/brand/icons/aossie_logo.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
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/assets/icons/favicon.ico b/public/favicon.ico
similarity index 100%
rename from public/assets/icons/favicon.ico
rename to public/favicon.ico
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..c20107f 100644
--- a/public/llms.txt
+++ b/public/llms.txt
@@ -1,6 +1,7 @@
-# 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.
+TODO: Project Description
+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 +9,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`).
@@ -35,4 +36,4 @@ This repository is a high-performance webpage starter template built on **Next.j
## 📦 Build Commands
- **Build:** `npm run build`
-- **Develop:** `npm run dev`
+- **Develop:** `npm run dev`
\ No newline at end of file
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..47cb468 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.
-Sitemap: https://project.aossie.org/sitemap.xml
+# Replace the placeholder domain TODO:'project.aossie.org' below with your actual project production domain.
+Sitemap: https://TODO: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..fa4cbb0 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 { getMessages, setRequestLocale } 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,26 @@ 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 function generateStaticParams() {
+ return routing.locales.map((locale) => ({ locale }));
+}
+
+export async function generateMetadata({
+ params,
+}: {
+ params: Promise<{ locale: string }>;
+}): Promise {
+ const { locale } = await params;
+ if (!routing.locales.includes(locale as (typeof routing.locales)[number])) {
+ notFound();
+ }
+ return generateLocaleMetadata(locale, "Home");
+}
export default async function RootLayout({
children,
@@ -36,13 +50,16 @@ export default async function RootLayout({
notFound();
}
+ // Enable static rendering
+ setRequestLocale(locale);
+
// Provide messages to Client Components
- const messages = await getMessages();
+ const messages = await getMessages({ locale });
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..1fa8edd 100644
--- a/src/app/[locale]/page.tsx
+++ b/src/app/[locale]/page.tsx
@@ -1,31 +1,31 @@
-"use client";
-
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 { getTranslations, setRequestLocale } 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;
+
+ // Enable static rendering
+ setRequestLocale(locale);
+
+ const t = await getTranslations({ locale, namespace: "Home" });
// Schema.org Structured Data
const jsonLd = {
"@context": "https://schema.org",
"@type": "WebPage",
- "name": "AOSSIE Webpage Starter",
+ "name": t("heading"),
"description": t("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,
};
@@ -33,7 +33,7 @@ export default function Home({
return (
{/* Schema.org JSON-LD Structured Data */}
-