A professional React + TypeScript + Material UI template with a reusable header and footer, perfect for quickly starting new projects.
- β¨ Material UI v7 - Modern, professional UI components
- π¨ Dark/Light Mode - Built-in theme toggle with custom teal accent colors
- π Internationalization (i18n) - Built-in EN/PT translations with easy-to-extend system
- π Language Switcher - Seamless PT/EN toggle in header
- π± Fully Responsive - Mobile-first design
- π― Glassmorphism Header - Fixed header with blur effect
- βοΈ Easy Configuration - Centralized config file for quick customization
- π Vite - Lightning-fast development and build
- π― TypeScript - Full type safety for translations
npx degit SimpleSoftwareLTDA/frontend-react-template my-new-project && cd my-new-project && npm install && npm run dev- Click "Use this template" on GitHub
- Create your new repository
- Clone and install:
git clone https://github.com/your-username/your-new-repo.git
cd your-new-repo
npm install
npm run devAll customizable settings are centralized in src/config/siteConfig.ts:
export const siteConfig = {
// Header Configuration
header: {
// Your GitHub profile URL
githubUrl: 'https://github.com/yourusername',
// Projects shown in dropdown (6-dots button)
projects: [
{ name: 'Project Alpha', url: 'https://example.com/alpha' },
{ name: 'Project Beta', url: 'https://example.com/beta' },
{ name: 'Project Gamma', url: 'https://example.com/gamma' },
],
},
// Default Settings
defaultLanguage: 'en' as 'en' | 'pt',
defaultTheme: 'dark' as 'light' | 'dark',
};- Update project info: Edit
src/config/siteConfig.ts - Add your projects: Update the
projectsarray - Set your GitHub URL: Change
githubUrl - Choose defaults: Set
defaultLanguageanddefaultTheme - Customize footer: Edit
src/locales/en.tsandsrc/locales/pt.ts(footer section)
The template includes built-in support for English (EN) and Portuguese (PT) translations.
All translations are stored in src/locales/:
en.ts- English translationspt.ts- Portuguese translations
import { useTranslation } from './contexts/LanguageContext';
function MyComponent() {
const { t, translations, language } = useTranslation();
return (
<div>
{/* Method 1: Direct access */}
<h1>{translations.home.title}</h1>
{/* Method 2: Using t() function with dot notation */}
<p>{t('home.subtitle')}</p>
{/* Method 3: With parameters */}
<button>{t('header.toggleTheme', { mode: 'dark' })}</button>
</div>
);
}- Edit translation files:
// src/locales/en.ts
export const en = {
mySection: {
greeting: 'Hello {{name}}!',
button: 'Click me',
},
};
// src/locales/pt.ts
export const pt: Translations = {
mySection: {
greeting: 'OlΓ‘ {{name}}!',
button: 'Clique aqui',
},
};- Use in components:
const { t } = useTranslation();
return <h1>{t('mySection.greeting', { name: 'User' })}</h1>;The language switcher in the header automatically updates all translated content across your app!
src/
βββ components/ # Reusable components
β βββ Header.tsx # Fixed header with glassmorphism
β βββ Footer.tsx # Centered footer
β βββ index.ts # Component exports
βββ contexts/ # React contexts
β βββ ThemeContext.tsx # Theme provider (light/dark mode)
β βββ LanguageContext.tsx # i18n provider
βββ config/ # Configuration
β βββ siteConfig.ts # β Main config file - Edit this!
βββ locales/ # Translation files
β βββ en.ts # English translations
β βββ pt.ts # Portuguese translations
β βββ index.ts # Exports
βββ App.tsx # Main app component
βββ main.tsx # App entry point
βββ index.css # Global styles
The theme uses a professional teal color scheme. To customize colors, edit src/contexts/ThemeContext.tsx:
primary: {
main: mode === 'light' ? '#0f766e' : '#34d399', // Change these!
}npm run dev # Start development server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # Run ESLint- React 19 - UI library
- TypeScript - Type safety
- Material UI v7 - Component library
- Vite - Build tool
- Emotion - CSS-in-JS styling
MIT License - Feel free to use this template for any project!
Template created by Brainon Queiroz