@zoyth/simple-site-framework 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +572 -0
- package/bin/create-simple-site.js +390 -0
- package/bin/simple-site.js +664 -0
- package/dist/client.js +135 -0
- package/dist/client.js.map +1 -0
- package/dist/client.mjs +107 -0
- package/dist/client.mjs.map +1 -0
- package/dist/components/index.d.mts +3936 -0
- package/dist/components/index.d.ts +3936 -0
- package/dist/components/index.js +38265 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.mjs +38173 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/config/index.d.mts +298 -0
- package/dist/config/index.d.ts +298 -0
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.mjs +1 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/index.d.mts +2184 -0
- package/dist/index.d.ts +2184 -0
- package/dist/index.js +1713 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1605 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/i18n/index.js +665 -0
- package/dist/lib/i18n/index.js.map +1 -0
- package/dist/lib/i18n/index.mjs +621 -0
- package/dist/lib/i18n/index.mjs.map +1 -0
- package/docs/DOCUMENTATION-STRUCTURE.md +1156 -0
- package/docs/EXPORTS.md +125 -0
- package/docs/PERFORMANCE.md +757 -0
- package/docs/POLICY-PAGES.md +867 -0
- package/docs/ROADMAP.md +334 -0
- package/docs/SEO.md +455 -0
- package/docs/SITEMAP.md +708 -0
- package/docs/STRUCTURED-DATA.md +671 -0
- package/docs/accessibility/common-patterns.md +529 -0
- package/docs/accessibility/keyboard-navigation.md +263 -0
- package/docs/accessibility/overview.md +122 -0
- package/docs/accessibility/screen-readers.md +311 -0
- package/docs/accessibility/wcag-compliance.md +159 -0
- package/docs/api/README.md +164 -0
- package/docs/api/components/Accessibility.md +356 -0
- package/docs/api/components/Button.md +240 -0
- package/docs/api/components/HeroSection.md +306 -0
- package/docs/architecture/decisions.md +449 -0
- package/docs/components/AnalyticsTracker.md +58 -0
- package/docs/components/AnimatedCounter.md +48 -0
- package/docs/components/AnimatedSection.md +56 -0
- package/docs/components/BlogCard.md +42 -0
- package/docs/components/Checkbox.md +56 -0
- package/docs/components/CodeBlock.md +52 -0
- package/docs/components/ComparisonTable.md +40 -0
- package/docs/components/ComponentDemo.md +38 -0
- package/docs/components/CountdownTimer.md +51 -0
- package/docs/components/ExitIntentModal.md +56 -0
- package/docs/components/FAQAccordion.md +66 -0
- package/docs/components/FeaturesGrid.md +55 -0
- package/docs/components/FileUpload.md +54 -0
- package/docs/components/I18nMetaTags.md +55 -0
- package/docs/components/Icon.md +53 -0
- package/docs/components/LazySection.md +46 -0
- package/docs/components/LiveProof.md +53 -0
- package/docs/components/LoadingSpinner.md +46 -0
- package/docs/components/MultiStepForm.md +48 -0
- package/docs/components/PolicyLayout.md +55 -0
- package/docs/components/PricingTable.md +49 -0
- package/docs/components/Radio.md +59 -0
- package/docs/components/SEOMetaTags.md +58 -0
- package/docs/components/ScriptInjector.md +50 -0
- package/docs/components/Select.md +72 -0
- package/docs/components/Skeleton.md +47 -0
- package/docs/components/StatsSection.md +48 -0
- package/docs/components/StickyBar.md +62 -0
- package/docs/components/StructuredData.md +99 -0
- package/docs/components/StyleGuide.md +46 -0
- package/docs/components/TableOfContents.md +47 -0
- package/docs/components/TestimonialCarousel.md +42 -0
- package/docs/components/Timeline.md +51 -0
- package/docs/components/Toast.md +59 -0
- package/docs/components/TrackedLink.md +62 -0
- package/docs/components/TrustBadges.md +44 -0
- package/docs/components/conversion/MobileCTA.md +363 -0
- package/docs/components/forms/ContactForm.md +75 -0
- package/docs/components/forms/FormField.md +74 -0
- package/docs/components/layout/Footer.md +601 -0
- package/docs/components/layout/Header.md +549 -0
- package/docs/components/layout/LanguageSelector.md +54 -0
- package/docs/components/layout/LanguageSwitcher.md +24 -0
- package/docs/components/overview.md +447 -0
- package/docs/components/sections/AboutSection.md +48 -0
- package/docs/components/sections/CTASection.md +596 -0
- package/docs/components/sections/CaseStudySection.md +47 -0
- package/docs/components/sections/ContactSection.md +599 -0
- package/docs/components/sections/FeatureSection.md +44 -0
- package/docs/components/sections/HeroSection.md +404 -0
- package/docs/components/sections/LogosSection.md +47 -0
- package/docs/components/sections/PersonalTaxesSection.md +23 -0
- package/docs/components/sections/RecruitingSection.md +23 -0
- package/docs/components/sections/SecurePortalSection.md +23 -0
- package/docs/components/sections/ServicePageLayout.md +52 -0
- package/docs/components/sections/ServicesSection.md +49 -0
- package/docs/components/sections/TestimonialSection.md +44 -0
- package/docs/components/sections/WhyChooseUsSection.md +54 -0
- package/docs/components/ui/Breadcrumb.md +70 -0
- package/docs/components/ui/Button.md +514 -0
- package/docs/components/ui/Card.md +501 -0
- package/docs/components/ui/Input.md +54 -0
- package/docs/components/ui/MobileLinks.md +43 -0
- package/docs/components/ui/Modal.md +60 -0
- package/docs/components/ui/Tabs.md +62 -0
- package/docs/components/ui/Textarea.md +52 -0
- package/docs/core-concepts/configuration-driven.md +552 -0
- package/docs/core-concepts/overview.md +351 -0
- package/docs/features/accessibility/README.md +73 -0
- package/docs/features/accessibility/aria-support.md +177 -0
- package/docs/features/accessibility/color-contrast.md +155 -0
- package/docs/features/accessibility/focus-management.md +187 -0
- package/docs/features/accessibility/testing.md +196 -0
- package/docs/features/analytics/README.md +51 -0
- package/docs/features/analytics/ab-testing.md +171 -0
- package/docs/features/analytics/conversion-tracking.md +207 -0
- package/docs/features/analytics/custom-events.md +219 -0
- package/docs/features/analytics/privacy.md +198 -0
- package/docs/features/analytics/setup.md +114 -0
- package/docs/features/analytics/tracking-events.md +224 -0
- package/docs/features/i18n/README.md +51 -0
- package/docs/features/i18n/best-practices.md +273 -0
- package/docs/features/i18n/configuration.md +84 -0
- package/docs/features/i18n/formatting.md +133 -0
- package/docs/features/i18n/locale-detection.md +122 -0
- package/docs/features/i18n/routing.md +99 -0
- package/docs/features/i18n/rtl-support.md +191 -0
- package/docs/features/i18n/translations.md +129 -0
- package/docs/features/internationalization.md +595 -0
- package/docs/features/performance/README.md +77 -0
- package/docs/features/performance/bundle-size.md +134 -0
- package/docs/features/performance/caching.md +131 -0
- package/docs/features/performance/code-splitting.md +121 -0
- package/docs/features/performance/image-optimization.md +110 -0
- package/docs/features/performance/lazy-loading.md +92 -0
- package/docs/features/performance/monitoring.md +148 -0
- package/docs/features/seo/README.md +51 -0
- package/docs/features/seo/best-practices.md +184 -0
- package/docs/features/seo/canonical-urls.md +182 -0
- package/docs/features/seo/meta-tags.md +126 -0
- package/docs/features/seo/open-graph.md +166 -0
- package/docs/features/seo/robots-txt.md +146 -0
- package/docs/features/seo/sitemaps.md +162 -0
- package/docs/features/seo/structured-data.md +166 -0
- package/docs/getting-started/installation.md +292 -0
- package/docs/getting-started/introduction.md +195 -0
- package/docs/getting-started/quick-start.md +460 -0
- package/docs/guides/analytics-setup.md +616 -0
- package/docs/i18n/CONFIGURATION.md +353 -0
- package/docs/i18n/EXAMPLES.md +402 -0
- package/docs/i18n/MIGRATION.md +260 -0
- package/docs/i18n/SEO.md +392 -0
- package/docs/i18n/STATIC-GENERATION-FIX.md +71 -0
- package/docs/migration/changelog.md +136 -0
- package/docs/migration/overview.md +233 -0
- package/docs/recipes/adding-animations.md +475 -0
- package/docs/recipes/forms-with-validation.md +393 -0
- package/package.json +152 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
This guide covers adding Simple Site Framework to an existing Next.js project or creating a new project from scratch.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Before installing, ensure you have:
|
|
8
|
+
|
|
9
|
+
- **Node.js** 18.x or later
|
|
10
|
+
- **npm** 9.x or later (or yarn/pnpm equivalent)
|
|
11
|
+
- **Next.js** 14.x or later with App Router
|
|
12
|
+
- **React** 18.x or 19.x
|
|
13
|
+
- **TypeScript** 5.x (recommended but not required)
|
|
14
|
+
|
|
15
|
+
## Quick Install (New Project)
|
|
16
|
+
|
|
17
|
+
The fastest way to start is with the CLI scaffolding tool:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @zoyth/simple-site-framework create my-site
|
|
21
|
+
cd my-site
|
|
22
|
+
npm install
|
|
23
|
+
npm run dev
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
This creates a complete Next.js project with all framework dependencies configured, sample configs, and example pages.
|
|
27
|
+
|
|
28
|
+
Skip to **[Quick Start Guide](./quick-start.md)** if you used this method.
|
|
29
|
+
|
|
30
|
+
## Manual Installation (Existing Project)
|
|
31
|
+
|
|
32
|
+
### 1. Install the Framework
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install @zoyth/simple-site-framework
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Install Peer Dependencies
|
|
39
|
+
|
|
40
|
+
The framework requires these peer dependencies:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install next@14 react@19 react-dom@19
|
|
44
|
+
npm install tailwindcss@4 @tailwindcss/postcss
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Tailwind CSS:** Both v3.4+ and v4.x are fully supported. The framework uses standard utility classes that work across versions.
|
|
48
|
+
|
|
49
|
+
### 3. Install Optional Dependencies
|
|
50
|
+
|
|
51
|
+
For full functionality, install these recommended packages:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# For forms with validation
|
|
55
|
+
npm install react-hook-form @hookform/resolvers zod
|
|
56
|
+
|
|
57
|
+
# For animations (optional)
|
|
58
|
+
npm install framer-motion
|
|
59
|
+
|
|
60
|
+
# For analytics tracking (optional)
|
|
61
|
+
npm install @vercel/analytics
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Configure Tailwind CSS
|
|
65
|
+
|
|
66
|
+
### 1. Initialize Tailwind (if not already done)
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npx tailwindcss init -p --ts
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 2. Update `tailwind.config.ts`
|
|
73
|
+
|
|
74
|
+
Your Tailwind config **must** include the framework components in the `content` array:
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import type { Config } from 'tailwindcss';
|
|
78
|
+
|
|
79
|
+
const config: Config = {
|
|
80
|
+
content: [
|
|
81
|
+
'./src/**/*.{js,ts,jsx,tsx,mdx}',
|
|
82
|
+
// ⚠️ REQUIRED: Include framework components
|
|
83
|
+
'./node_modules/@zoyth/simple-site-framework/dist/**/*.{js,mjs}',
|
|
84
|
+
],
|
|
85
|
+
theme: {
|
|
86
|
+
extend: {
|
|
87
|
+
colors: {
|
|
88
|
+
// Define colors that match your theme config
|
|
89
|
+
primary: '#F16531',
|
|
90
|
+
'primary-hover': '#D9551C',
|
|
91
|
+
secondary: '#2D3748',
|
|
92
|
+
'secondary-hover': '#1A202C',
|
|
93
|
+
accent: '#F59E0B',
|
|
94
|
+
'warm-gray': '#F8FAFC',
|
|
95
|
+
},
|
|
96
|
+
fontFamily: {
|
|
97
|
+
heading: ['var(--font-heading)', 'serif'],
|
|
98
|
+
body: ['var(--font-body)', 'sans-serif'],
|
|
99
|
+
},
|
|
100
|
+
backgroundImage: {
|
|
101
|
+
'brand-gradient-light': 'linear-gradient(to bottom, #F8FAFC, #FFFFFF)',
|
|
102
|
+
'hero-gradient': 'linear-gradient(135deg, #2D3748, #1A202C)',
|
|
103
|
+
'footer-gradient-orange': 'linear-gradient(135deg, #F37840, #D85620)',
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export default config;
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Important:** The framework's components use custom theme tokens. If you skip this step, your site will render but look unstyled. See **[Troubleshooting](../../TROUBLESHOOTING.md)** for details.
|
|
113
|
+
|
|
114
|
+
### 3. Configure Fonts (Optional but Recommended)
|
|
115
|
+
|
|
116
|
+
Use Next.js's `next/font` for optimal font loading:
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
// src/app/layout.tsx
|
|
120
|
+
import { Playfair_Display, Inter } from 'next/font/google';
|
|
121
|
+
|
|
122
|
+
const playfair = Playfair_Display({
|
|
123
|
+
subsets: ['latin'],
|
|
124
|
+
variable: '--font-heading',
|
|
125
|
+
display: 'swap',
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
const inter = Inter({
|
|
129
|
+
subsets: ['latin'],
|
|
130
|
+
variable: '--font-body',
|
|
131
|
+
display: 'swap',
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
export default function RootLayout({ children }) {
|
|
135
|
+
return (
|
|
136
|
+
<html lang="en" className={`${playfair.variable} ${inter.variable}`}>
|
|
137
|
+
<body className="font-body">{children}</body>
|
|
138
|
+
</html>
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Setup Internationalization (Optional)
|
|
144
|
+
|
|
145
|
+
If you need multi-language support, create an i18n configuration:
|
|
146
|
+
|
|
147
|
+
### 1. Create i18n Config
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
// src/config/i18n.ts
|
|
151
|
+
import type { I18nConfig } from '@zoyth/simple-site-framework';
|
|
152
|
+
|
|
153
|
+
export const i18nConfig: I18nConfig = {
|
|
154
|
+
locales: ['en', 'fr'], // Your supported languages
|
|
155
|
+
defaultLocale: 'en',
|
|
156
|
+
localePrefix: 'as-needed', // Default locale has no prefix in URL
|
|
157
|
+
localeDetection: true, // Auto-detect browser language
|
|
158
|
+
localeNames: {
|
|
159
|
+
en: 'English',
|
|
160
|
+
fr: 'Français',
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 2. Create Middleware
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// src/middleware.ts
|
|
169
|
+
import { createI18nMiddleware } from '@zoyth/simple-site-framework/lib/i18n';
|
|
170
|
+
import { i18nConfig } from './config/i18n';
|
|
171
|
+
|
|
172
|
+
export default createI18nMiddleware(i18nConfig);
|
|
173
|
+
|
|
174
|
+
export const config = {
|
|
175
|
+
matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
|
|
176
|
+
};
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### 3. Update App Structure
|
|
180
|
+
|
|
181
|
+
For multi-language sites, use Next.js dynamic routing:
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
src/app/
|
|
185
|
+
[locale]/
|
|
186
|
+
layout.tsx
|
|
187
|
+
page.tsx
|
|
188
|
+
about/
|
|
189
|
+
page.tsx
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
See **[Internationalization Guide](../features/internationalization.md)** for complete setup instructions.
|
|
193
|
+
|
|
194
|
+
## Verify Installation
|
|
195
|
+
|
|
196
|
+
Create a test page to ensure everything works:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// src/app/page.tsx
|
|
200
|
+
import { HeroSection } from '@zoyth/simple-site-framework';
|
|
201
|
+
|
|
202
|
+
export default function HomePage() {
|
|
203
|
+
return (
|
|
204
|
+
<HeroSection
|
|
205
|
+
heading="Welcome to My Site"
|
|
206
|
+
description="Built with Simple Site Framework"
|
|
207
|
+
cta={{
|
|
208
|
+
text: 'Get Started',
|
|
209
|
+
href: '/contact'
|
|
210
|
+
}}
|
|
211
|
+
variant="centered"
|
|
212
|
+
/>
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Run the development server:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
npm run dev
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Visit `http://localhost:3000` - you should see a styled hero section.
|
|
224
|
+
|
|
225
|
+
## Troubleshooting
|
|
226
|
+
|
|
227
|
+
### Components Render Without Styling
|
|
228
|
+
|
|
229
|
+
**Cause:** Tailwind CSS isn't scanning the framework's components, or custom theme tokens are missing.
|
|
230
|
+
|
|
231
|
+
**Solution:**
|
|
232
|
+
1. Verify `tailwind.config.ts` includes the framework in `content` array
|
|
233
|
+
2. Define required theme tokens (colors, fonts, gradients)
|
|
234
|
+
3. Restart dev server after config changes
|
|
235
|
+
|
|
236
|
+
See **[TROUBLESHOOTING.md](../../TROUBLESHOOTING.md)** for detailed debugging.
|
|
237
|
+
|
|
238
|
+
### TypeScript Errors
|
|
239
|
+
|
|
240
|
+
**Cause:** Missing type definitions or incompatible versions.
|
|
241
|
+
|
|
242
|
+
**Solution:**
|
|
243
|
+
1. Ensure TypeScript 5.x is installed: `npm install -D typescript@5`
|
|
244
|
+
2. Check Next.js is v14+: `npm list next`
|
|
245
|
+
3. Restart TypeScript server in your editor
|
|
246
|
+
|
|
247
|
+
### Build Errors with "use client" Directives
|
|
248
|
+
|
|
249
|
+
**Cause:** Importing client-only components from server components.
|
|
250
|
+
|
|
251
|
+
**Solution:**
|
|
252
|
+
- Import analytics/client-only utilities from `/client`:
|
|
253
|
+
```typescript
|
|
254
|
+
import { AnalyticsTracker } from '@zoyth/simple-site-framework/client';
|
|
255
|
+
```
|
|
256
|
+
- Server-safe components come from main export:
|
|
257
|
+
```typescript
|
|
258
|
+
import { HeroSection } from '@zoyth/simple-site-framework';
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
See **[Server/Client Split](../core-concepts/server-client-split.md)** for details.
|
|
262
|
+
|
|
263
|
+
## Next Steps
|
|
264
|
+
|
|
265
|
+
Now that installation is complete:
|
|
266
|
+
|
|
267
|
+
- **[Quick Start →](./quick-start.md)** - Build your first page in 5 minutes
|
|
268
|
+
- **[First Project →](./first-project.md)** - Complete tutorial
|
|
269
|
+
- **[Configuration →](../core-concepts/configuration-driven.md)** - Learn the configuration approach
|
|
270
|
+
- **[Components →](../components/overview.md)** - Explore available components
|
|
271
|
+
|
|
272
|
+
## Package Information
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"name": "@zoyth/simple-site-framework",
|
|
277
|
+
"version": "0.1.0",
|
|
278
|
+
"peerDependencies": {
|
|
279
|
+
"next": "^14.0.0",
|
|
280
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
281
|
+
"react-dom": "^18.0.0 || ^19.0.0",
|
|
282
|
+
"tailwindcss": "^3.4.0 || ^4.0.0"
|
|
283
|
+
},
|
|
284
|
+
"dependencies": {
|
|
285
|
+
"clsx": "^2.1.1",
|
|
286
|
+
"tailwind-merge": "^3.4.0",
|
|
287
|
+
"rehype-slug": "^6.0.0"
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Note:** The framework has minimal dependencies. Heavy packages like `framer-motion`, `react-hook-form`, and `zod` are peer dependencies - install only what you need.
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Introduction to Simple Site Framework
|
|
2
|
+
|
|
3
|
+
Simple Site Framework is a configuration-driven React framework built on Next.js, designed specifically for professional service websites, SaaS landing pages, and marketing sites that need to convert visitors into customers.
|
|
4
|
+
|
|
5
|
+
## What is Simple Site Framework?
|
|
6
|
+
|
|
7
|
+
Unlike traditional component libraries that give you isolated pieces, Simple Site Framework provides:
|
|
8
|
+
|
|
9
|
+
- **Complete page sections** ready to use (Hero, Services, Testimonials, Contact, etc.)
|
|
10
|
+
- **Configuration-first approach** - define your content and theme in simple config files
|
|
11
|
+
- **Built-in internationalization** - support any number of languages with minimal setup
|
|
12
|
+
- **Production-ready components** - battle-tested on real commercial websites
|
|
13
|
+
- **Type-safe everything** - full TypeScript support with comprehensive type definitions
|
|
14
|
+
- **Accessibility by default** - WCAG 2.1 AA compliant out of the box
|
|
15
|
+
- **Performance optimized** - lazy loading, code splitting, and efficient animations
|
|
16
|
+
|
|
17
|
+
## Who Is This For?
|
|
18
|
+
|
|
19
|
+
This framework is ideal for:
|
|
20
|
+
|
|
21
|
+
- **Agencies** building multiple professional service websites
|
|
22
|
+
- **SaaS companies** creating high-converting landing pages
|
|
23
|
+
- **Solo developers** who want to ship faster without sacrificing quality
|
|
24
|
+
- **Teams** needing consistent, maintainable site architecture
|
|
25
|
+
- **Projects** requiring multi-language support from day one
|
|
26
|
+
|
|
27
|
+
## Philosophy
|
|
28
|
+
|
|
29
|
+
### Configuration Over Code
|
|
30
|
+
|
|
31
|
+
Instead of writing component markup repeatedly, you define your site in configuration files:
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// src/config/site.ts
|
|
35
|
+
export const siteConfig = {
|
|
36
|
+
name: 'Acme Corp',
|
|
37
|
+
description: 'Professional consulting services',
|
|
38
|
+
theme: {
|
|
39
|
+
primaryColor: '#F16531',
|
|
40
|
+
fontHeading: 'Playfair Display',
|
|
41
|
+
fontBody: 'Inter',
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The framework handles rendering, responsive design, accessibility, and performance automatically.
|
|
47
|
+
|
|
48
|
+
### Progressive Enhancement
|
|
49
|
+
|
|
50
|
+
Start simple, add complexity only when needed:
|
|
51
|
+
|
|
52
|
+
1. **Level 1:** Use pre-built sections with default styling
|
|
53
|
+
2. **Level 2:** Customize with your own content and theme
|
|
54
|
+
3. **Level 3:** Override individual component props for specific needs
|
|
55
|
+
4. **Level 4:** Create custom variants while keeping the framework's benefits
|
|
56
|
+
|
|
57
|
+
### Type Safety First
|
|
58
|
+
|
|
59
|
+
Every configuration option, prop, and utility function is fully typed:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import type { SiteConfig, ThemeConfig, LocalizedString } from '@zoyth/simple-site-framework';
|
|
63
|
+
|
|
64
|
+
const content: LocalizedString = {
|
|
65
|
+
en: 'Get Started',
|
|
66
|
+
fr: 'Commencer'
|
|
67
|
+
};
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
TypeScript catches configuration errors at build time, not at runtime.
|
|
71
|
+
|
|
72
|
+
## Core Features
|
|
73
|
+
|
|
74
|
+
### 35+ Production-Ready Components
|
|
75
|
+
|
|
76
|
+
- **Layout:** Header, Footer, LanguageSelector
|
|
77
|
+
- **Sections:** Hero, About, Services, Testimonials, Contact, CTA
|
|
78
|
+
- **UI:** Button, Card, Input, Modal, Tabs, Breadcrumb
|
|
79
|
+
- **Forms:** ContactForm, FormField, validation with React Hook Form + Zod
|
|
80
|
+
- **Conversion:** MobileCTA, CTASection, LiveProof
|
|
81
|
+
- **Accessibility:** SkipLink, A11yAnnouncer, ARIA-enhanced form components
|
|
82
|
+
|
|
83
|
+
### Flexible Internationalization
|
|
84
|
+
|
|
85
|
+
Support 1, 2, or 20+ languages with the same code:
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
// Single language - no routing overhead
|
|
89
|
+
{ locales: ['en'], defaultLocale: 'en' }
|
|
90
|
+
|
|
91
|
+
// Bilingual with simple toggle
|
|
92
|
+
{ locales: ['en', 'fr'], defaultLocale: 'en' }
|
|
93
|
+
|
|
94
|
+
// Multi-language with dropdown selector
|
|
95
|
+
{ locales: ['en', 'fr', 'es', 'de', 'ja'], defaultLocale: 'en' }
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
The framework automatically handles:
|
|
99
|
+
- URL routing based on locale
|
|
100
|
+
- Language detection from browser preferences
|
|
101
|
+
- Cookie persistence of user's choice
|
|
102
|
+
- SEO meta tags (hreflang, canonical, etc.)
|
|
103
|
+
|
|
104
|
+
### Theme System
|
|
105
|
+
|
|
106
|
+
Define your brand once, apply it everywhere:
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
export const themeConfig: ThemeConfig = {
|
|
110
|
+
colors: {
|
|
111
|
+
primary: '#F16531',
|
|
112
|
+
secondary: '#2D3748',
|
|
113
|
+
},
|
|
114
|
+
fonts: {
|
|
115
|
+
heading: 'Playfair Display',
|
|
116
|
+
body: 'Inter',
|
|
117
|
+
},
|
|
118
|
+
animations: {
|
|
119
|
+
hero: 'fade-up',
|
|
120
|
+
sections: 'slide-in',
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
All components automatically use your theme tokens, ensuring consistency.
|
|
126
|
+
|
|
127
|
+
### Built for Next.js 14+
|
|
128
|
+
|
|
129
|
+
The framework is specifically optimized for Next.js App Router:
|
|
130
|
+
|
|
131
|
+
- **Server Components** by default for better performance
|
|
132
|
+
- **Client Components** where needed (forms, animations, analytics)
|
|
133
|
+
- **Proper exports** - server-safe code in main export, client-only in `/client`
|
|
134
|
+
- **Streaming-friendly** - no blocking JavaScript requirements
|
|
135
|
+
- **SEO optimized** - server-rendered content with proper meta tags
|
|
136
|
+
|
|
137
|
+
## What Sets This Apart?
|
|
138
|
+
|
|
139
|
+
### Not Just Components
|
|
140
|
+
|
|
141
|
+
Most frameworks give you `<Button>` and `<Card>` and leave you to figure out layout, content structure, and responsive design. Simple Site Framework gives you complete, production-ready sections:
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
<HeroSection
|
|
145
|
+
heading={{ en: 'Transform Your Business', fr: 'Transformez votre entreprise' }}
|
|
146
|
+
description={{ en: 'Professional consulting...', fr: 'Services de conseil...' }}
|
|
147
|
+
cta={{
|
|
148
|
+
text: { en: 'Get Started', fr: 'Commencer' },
|
|
149
|
+
href: '/contact'
|
|
150
|
+
}}
|
|
151
|
+
backgroundImage="/hero-bg.jpg"
|
|
152
|
+
variant="centered"
|
|
153
|
+
locale={locale}
|
|
154
|
+
/>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Battle-Tested in Production
|
|
158
|
+
|
|
159
|
+
Every component and pattern in this framework has been used in real commercial websites:
|
|
160
|
+
|
|
161
|
+
- **MobileCTA** - Improved mobile conversions on courrielleur.com
|
|
162
|
+
- **CTASection** - Used across 5+ pages with proven conversion patterns
|
|
163
|
+
- **LiveProof** - Social proof notifications that build trust
|
|
164
|
+
- **ContactForm** - Handles thousands of leads with validation and accessibility
|
|
165
|
+
|
|
166
|
+
### Configuration-Driven Consistency
|
|
167
|
+
|
|
168
|
+
When you have multiple pages or multiple projects, consistency matters. With configuration files, you can't accidentally use the wrong font or color:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
// All buttons automatically use your theme
|
|
172
|
+
<Button variant="filled" /> // Uses theme.colors.primary
|
|
173
|
+
|
|
174
|
+
// All headings use your font
|
|
175
|
+
<h1 className="font-heading"> // Uses theme.fonts.heading
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Next Steps
|
|
179
|
+
|
|
180
|
+
Ready to get started? Choose your path:
|
|
181
|
+
|
|
182
|
+
- **[Installation →](./installation.md)** - Add to an existing Next.js project
|
|
183
|
+
- **[Quick Start →](./quick-start.md)** - Create a new project in 5 minutes
|
|
184
|
+
- **[First Project →](./first-project.md)** - Step-by-step tutorial
|
|
185
|
+
- **[Core Concepts →](../core-concepts/overview.md)** - Understand the architecture
|
|
186
|
+
|
|
187
|
+
## Community and Support
|
|
188
|
+
|
|
189
|
+
- **GitHub Issues:** Bug reports and feature requests
|
|
190
|
+
- **Documentation:** Comprehensive guides and API reference
|
|
191
|
+
- **Examples:** Real-world usage patterns and templates
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
**Note:** This framework is actively developed and used in production. While the API is stable, we're continuously adding features and improvements based on real-world usage.
|