Β
Resonate is an open-source social voice platform, similar to Clubhouse and Twitter Spaces, but completely open-source and community-driven. It aims to enhance credibility within the open-source community, attract users, and foster growth through real-time audio communication.
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.
- Real-time Audio Communication: Interactive live rooms and voice channels for community events.
- Pair Chatting: Random partner matching for developer networking.
- Rooms & Event Management: Schedule and moderate open-source audio discussions.
- Multi-language Support (i18n): Subpath routing (
/en,/hi) with instantaneous client locale switching. - Smooth Inertial Scrolling: High-performance scrolling animations powered by
lenis. - Semantic Dark / Light Theme: Flash-free color switching using
next-themesand Tailwind v4 CSS variables.
- Framework: Next.js 16 (App Router)
- UI & Logic: React 19 & TypeScript
- Styling: Tailwind CSS v4 (
@tailwindcss/postcss) - Internationalization:
next-intl - Animations & Motion: Framer Motion &
lenissmooth scroll - Code Quality: ESLint & Vitest testing framework
In the checklist below, mark the items that have been completed for your project:
- The project has a logo (
public/brand/icons/resonate_logo.svg). - The project has a favicon (
public/brand/icons/favicon.ico). - The web frontend:
- Has proper title and metadata.
- Has proper open graph metadata, to ensure that it is shown well when shared in social media.
- Has a footer and header with AOSSIE logos and social handles.
- Uses React Server Components by default, introducing Client Components (
"use client") only when interactivity or client hooks are required. - Is deployed to GitHub Pages via a GitHub Workflow (
.github/workflows/nextjs.yml). - Has automated CI build and lint validation (
.github/workflows/ci.yml). - Has CodeRabbit automated AI code review (
.coderabbit.yml). - Has open-source legal compliance (
DCO.md,COPYRIGHT.md,Contributors.md,MAINTAINERS.md,BestPracticesChecklist.md).
- 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-themesand Tailwind CSS v4 custom variants. - Robust i18n & l10n: Deeply integrated multi-language support:
- Pre-configured default locale (
/en) with subpath routing. - Subpath routing (e.g.,
/hifor Hindi, and/enfor 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.
- Pre-configured default locale (
- Developer Experience: Strict TypeScript compilation, ES Lint setup, and Vitest suite.
- Application Control Compatibility: Configured with manual Webpack & Turbopack alias resolution to bypass restrictive execution environments blocking native binary compiles.
- Open-Source Governance & CI/CD: Integrated GitHub Actions workflows (
ci.yml,nextjs.yml,label-merge-conflicts.yml),.coderabbit.yml, andDCO.mdlegal documentation. - AI Agent Pairing Ready: Includes
AGENTS.mdandCLAUDE.mdto guide AI development agents.
Here is a breakdown of the key i18n directories and files:
βββ .github/
β βββ workflows/ # GitHub Actions (CI, GitHub Pages deployment, merge conflict checks)
βββ audit/ # End-to-end peer evaluation & audit report
βββ next.config.ts # Alias-wrapped Next configuration (output: 'export')
βββ public/ # Static assets, robots.txt, assetlinks.json, llms.txt
β βββ .well-known/
β βββ llms.txt
β βββ robots.txt
β βββ brand/
β βββ Brand.md # Official Resonate & AOSSIE brand guidelines document
β βββ icons/
β βββ aossie_logo.svg # AOSSIE Vector logo
β βββ resonate_logo.svg # Resonate 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/
β β βββ 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
β β βββ globals.css # Global styles for the app segment
β βββ 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
βββ BestPracticesChecklist.md # Good engineering practices verification document
βββ COPYRIGHT.md # Copyright terms
βββ Contributors.md # Project contributors list
βββ DCO.md # Developer Certificate of Origin
To add support for a new language (e.g., French - fr):
-
Register the language: Open
src/config/languages.tsand add your new language to thelanguagesarray:export const languages: Language[] = [ { code: 'en', name: 'English', localName: 'English' }, { code: 'hi', name: 'Hindi', localName: 'ΰ€Ήΰ€Ώΰ€¨ΰ₯ΰ€¦ΰ₯' }, { code: 'fr', name: 'French', localName: 'FranΓ§ais' } ];
-
Create the translation catalog: Under
src/messages/, create a new file namedfr.json:{ "Home": { "heading": "Bienvenue sur Resonate" } } -
Next.js and
next-intlwill automatically register the locale, add it to routing tables, and handle redirection for visitors matchingfrbrowser preferences.
By default, server components can load translations statically without shipping translation JSONs to the client bundle:
import { useTranslations } from 'next-intl';
export default function Section() {
const t = useTranslations('Home');
return <h1>{t('heading')}</h1>;
}If your component uses React hooks (e.g., useState), define it with "use client" and import from next-intl:
"use client";
import { useTranslations } from 'next-intl';
export default function InteractiveButton() {
const t = useTranslations('Home');
return <button onClick={() => alert('Clicked!')}>{t('heading')}</button>;
}When navigating between routes, always use the locale-aware navigation helpers imported from src/i18n/navigation.ts instead of standard next/link or next/navigation:
import { Link } from '../../i18n/navigation';
// Will automatically resolve to /en/about or /hi/about based on active locale
<Link href="/about">About Us</Link>The website uses next-themes combined with Tailwind CSS v4's class-based custom variants to provide a responsive and flash-free theme experience.
Tailwind v4 is configured via CSS custom properties in src/app/[locale]/globals.css. To adjust default light and dark theme background or text colors, edit the root variables:
:root {
--background: #ffffff;
--foreground: #121212;
}
.dark {
--background: #090d16;
--foreground: #f4f4f5;
}The repository integrates the lenis library to provide smooth, high-performance inertial scrolling across all browsers via lenis-provider.tsx.
Install the project dependencies:
npm installStart the development server:
npm run devOpen http://localhost:3000 to view it. The application defaults to /en for English. Visitors can select another locale using the LanguageSwitcher component.
Compile and export the project into static HTML/CSS/JS assets for hosting on GitHub Pages:
npm run buildThis generates an optimized static export in the ./out directory, fully configured for client-side rendering and hosting on GitHub Pages.
Execute the unit test suite:
npm run testWe welcome contributions of all kinds! To contribute:
- Fork the repository and create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'feat: Add some AmazingFeature'). - Ensure code quality:
npm run lintnpm run testnpm run build
- Push your branch (
git push origin feature/AmazingFeature). - Open a Pull Request for review.
Β© 2026 AOSSIE. Released under the Apache License 2.0.