Features
Explore all the features included in CodeBaseHub starter kit
Configuration System
Centralized configuration file at packages/config/index.ts to control all app settings:
export const appConfig: AppConfig = {
appName: "Your App Name",
description: "A Full-stack starter kit for building web and mobile app",
author: "Your Name",
emailFrom: "hi@codebasehub.pro",
legal: {
termsUrl: "https://codebasehub.pro/terms",
privacyUrl: "https://codebasehub.pro/privacy",
},
i18n: {
default: "en",
locales: {
en: "English",
tr: "Türkçe",
ar: "العربية",
},
},
platforms: {
web: {
auth: { allowSignup: true, google: false, apple: false },
theme: "system",
},
mobile: {
auth: { allowSignup: true, google: false, apple: false },
theme: "system",
features: { onboarding: true, userInfo: true },
integrations: {
appsFlyer: true,
oneSignal: true,
postHog: true,
revenueCat: true,
},
},
},
};Internationalization (i18n)
Built-in support for multiple languages with next-intl, making it easy to reach a global audience.
Multi-language Support
English, Turkish, and Arabic with easy expansion to more languages.
RTL Support
Automatic right-to-left layout for Arabic and other RTL languages.
Type-safe Translations
Fully typed translations with TypeScript autocomplete.
Usage Example
import { useTranslations } from 'next-intl';
export function MyComponent() {
const t = useTranslations('common');
return (
<div>
<h1>{t('welcome.title')}</h1>
<p>{t('welcome.description')}</p>
</div>
);
}import { getTranslations } from 'next-intl/server';
export default async function Page() {
const t = await getTranslations('common');
return <h1>{t('welcome.title')}</h1>;
}import { useLocale } from 'next-intl';
import { useRouter } from 'next/navigation';
export function LanguageSwitcher() {
const locale = useLocale();
const router = useRouter();
const changeLanguage = (newLocale: string) => {
router.push(`/${newLocale}`);
};
return (
<select value={locale} onChange={(e) => changeLanguage(e.target.value)}>
<option value="en">English</option>
<option value="tr">Türkçe</option>
<option value="ar">العربية</option>
</select>
);
}Platform-Specific Configuration
Configure features separately for Web and Mobile platforms:
Web Configuration
platforms: {
web: {
auth: {
allowSignup: true,
google: false,
apple: false,
},
theme: "system",
},
}- Control user registration
- Configure OAuth providers
- Set theme preference
Mobile Configuration
platforms: {
mobile: {
auth: {
allowSignup: true,
google: false,
apple: false,
},
theme: "system",
features: {
onboarding: true,
userInfo: true,
},
integrations: {
appsFlyer: true,
oneSignal: true,
postHog: true,
revenueCat: true,
},
},
}- Authentication settings
- Feature toggles
- Analytics integrations
Mobile Features & Integrations
Enable or disable features and third-party integrations with simple configuration toggles:
Onboarding
Welcome screens and user setup flow.
User Info
User profile and information management.
AppsFLyer
Mobile attribution and analytics.
OneSignal
Push notifications and messaging.
PostHog
Product analytics and feature flags.
RevenueCat
In-app subscriptions and monetization.
Theme System
Beautiful dark mode support with automatic system preference detection.
Toggle themes easily in your components:
import { useTheme } from "next-themes";
export function ThemeToggle() {
const { theme, setTheme } = useTheme();
return (
<button onClick={() => setTheme(theme === "dark" ? "light" : "dark")}>
{theme === "dark" ? "🌙" : "☀️"}
</button>
);
}User Interface
Modern, accessible UI components built with shadcn/ui and Tailwind CSS.
Database & ORM
PostgreSQL database with Drizzle ORM for type-safe database queries.
Define Schema
import { pgTable, text, timestamp, uuid } from "drizzle-orm/pg-core";
export const users = pgTable("users", {
id: uuid("id").defaultRandom().primaryKey(),
email: text("email").notNull().unique(),
name: text("name").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
});Query Data
import { db } from "@/db";
import { users } from "@/db/schema";
import { eq } from "drizzle-orm";
const user = await db.query.users.findFirst({
where: eq(users.email, "user@example.com"),
});Run Migrations
# Push schema to database
pnpm db:push
# Generate types
pnpm db:generateAdditional Features
Dashboard
Full-featured admin panel with user management.
Documentation
Built-in documentation system powered by Fumadocs.
Code Quality
Biome, TypeScript configured for consistent code style.
Monorepo
Organized workspace with Turborepo for efficient builds.
Desktop App
Build native desktop apps with Tauri integration.
Mobile App
React Native app with Expo for iOS and Android.
All features are production-ready and follow industry best practices. Customize them using the centralized config file.