Skip to content

Commit 340ce58

Browse files
starter template
1 parent c186341 commit 340ce58

18 files changed

Lines changed: 808 additions & 0 deletions

.eslintrc.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "next/core-web-vitals"
3+
}

.github/workflows/deploy.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: Deploy Next.js site to Pages
2+
3+
on:
4+
# Runs on pushes targeting the main branch
5+
push:
6+
branches:
7+
- main
8+
9+
# Allows you to run this workflow manually from the Actions tab
10+
workflow_dispatch:
11+
12+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20+
concurrency:
21+
group: "pages"
22+
cancel-in-progress: false
23+
24+
jobs:
25+
build:
26+
runs-on: ubuntu-latest
27+
steps:
28+
- name: Checkout
29+
uses: actions/checkout@v4
30+
31+
- uses: pnpm/action-setup@v4
32+
name: Install pnpm
33+
with:
34+
version: 10
35+
run_install: false
36+
37+
- name: Install Node.js
38+
uses: actions/setup-node@v4
39+
with:
40+
node-version: 22
41+
cache: 'pnpm'
42+
43+
- name: Install dependencies
44+
run: pnpm install
45+
46+
- name: Setup Pages
47+
id: setup_pages
48+
uses: actions/configure-pages@v5
49+
50+
- name: Restore cache
51+
uses: actions/cache@v4
52+
with:
53+
path: |
54+
.next/cache
55+
# Generate a new cache whenever packages or source files change.
56+
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
57+
# If source files changed but packages didn't, rebuild from a prior cache.
58+
restore-keys: |
59+
${{ runner.os }}-nextjs-${{ hashFiles('**/pnpm-lock.yaml') }}-
60+
61+
- name: Build with Next.js
62+
run: pnpm run build
63+
64+
- name: Upload artifact
65+
uses: actions/upload-pages-artifact@v3
66+
with:
67+
path: ./out
68+
69+
deploy:
70+
environment:
71+
name: github-pages
72+
url: ${{ steps.deployment.outputs.page_url }}
73+
runs-on: ubuntu-latest
74+
needs: build
75+
steps:
76+
- name: Deploy to GitHub Pages
77+
id: deployment
78+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
.yarn/install-state.gz
8+
9+
# testing
10+
/coverage
11+
12+
# next.js
13+
/.next/
14+
/out/
15+
16+
# production
17+
/build
18+
19+
# misc
20+
.DS_Store
21+
*.pem
22+
23+
# debug
24+
npm-debug.log*
25+
yarn-debug.log*
26+
yarn-error.log*
27+
28+
# local env files
29+
.env*.local
30+
31+
# vercel
32+
.vercel
33+
34+
# typescript
35+
*.tsbuildinfo
36+
next-env.d.ts

app/globals.css

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
@tailwind base;
2+
@tailwind components;
3+
@tailwind utilities;
4+
5+
@layer base {
6+
:root {
7+
--background: 0 0% 100%;
8+
--foreground: 222.2 84% 4.9%;
9+
--card: 0 0% 100%;
10+
--card-foreground: 222.2 84% 4.9%;
11+
--popover: 0 0% 100%;
12+
--popover-foreground: 222.2 84% 4.9%;
13+
--primary: 222.2 47.4% 11.2%;
14+
--primary-foreground: 210 40% 98%;
15+
--secondary: 210 40% 96.1%;
16+
--secondary-foreground: 222.2 47.4% 11.2%;
17+
--muted: 210 40% 96.1%;
18+
--muted-foreground: 215.4 16.3% 46.9%;
19+
--accent: 210 40% 96.1%;
20+
--accent-foreground: 222.2 47.4% 11.2%;
21+
--destructive: 0 84.2% 60.2%;
22+
--destructive-foreground: 210 40% 98%;
23+
--border: 214.3 31.8% 91.4%;
24+
--input: 214.3 31.8% 91.4%;
25+
--ring: 222.2 84% 4.9%;
26+
--radius: 0.5rem;
27+
}
28+
29+
.dark {
30+
--background: 222.2 84% 4.9%;
31+
--foreground: 210 40% 98%;
32+
--card: 222.2 84% 4.9%;
33+
--card-foreground: 210 40% 98%;
34+
--popover: 222.2 84% 4.9%;
35+
--popover-foreground: 210 40% 98%;
36+
--primary: 210 40% 98%;
37+
--primary-foreground: 222.2 47.4% 11.2%;
38+
--secondary: 217.2 32.6% 17.5%;
39+
--secondary-foreground: 210 40% 98%;
40+
--muted: 217.2 32.6% 17.5%;
41+
--muted-foreground: 215 20.2% 65.1%;
42+
--accent: 217.2 32.6% 17.5%;
43+
--accent-foreground: 210 40% 98%;
44+
--destructive: 0 62.8% 30.6%;
45+
--destructive-foreground: 210 40% 98%;
46+
--border: 217.2 32.6% 17.5%;
47+
--input: 217.2 32.6% 17.5%;
48+
--ring: 212.7 26.8% 83.9%;
49+
}
50+
}
51+
52+
@layer base {
53+
* {
54+
@apply border-border;
55+
}
56+
body {
57+
@apply bg-background text-foreground;
58+
}
59+
}

app/layout.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import type { Metadata } from "next";
2+
import { Inter } from "next/font/google";
3+
import "./globals.css";
4+
5+
const inter = Inter({
6+
subsets: ["latin"],
7+
display: "swap",
8+
});
9+
10+
export const metadata: Metadata = {
11+
title: "Serp Apps",
12+
description: "Collection of useful applications",
13+
};
14+
15+
export default function RootLayout({
16+
children,
17+
}: Readonly<{
18+
children: React.ReactNode;
19+
}>) {
20+
return (
21+
<html lang="en">
22+
<body className={`${inter.className} antialiased`}>
23+
{children}
24+
</body>
25+
</html>
26+
);
27+
}

app/page.tsx

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
import { Hero111 } from "@/components/Hero111";
2+
import { Button } from "@/components/ui/button";
3+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
4+
import { ArrowRight, Code2, Palette, Zap, Shield, Globe, Sparkles } from "lucide-react";
5+
6+
export default function HomePage() {
7+
return (
8+
<main className="min-h-screen">
9+
{/* Hero Section */}
10+
<Hero111
11+
badgeText="Welcome to Serp Apps"
12+
title="Build Amazing Apps with Modern Web Technologies"
13+
subtitle="Discover our collection of powerful web applications built with Next.js, TypeScript, and shadcn/ui. Fast, reliable, and designed with you in mind."
14+
button1Text="Browse Apps"
15+
button1Link="/apps"
16+
button2Text="View on GitHub"
17+
button2Link="https://github.com/serpapps"
18+
/>
19+
20+
{/* Features Section */}
21+
<section id="features" className="py-24 px-4 sm:px-6 lg:px-8">
22+
<div className="mx-auto max-w-7xl">
23+
<div className="text-center mb-16">
24+
<h2 className="text-3xl font-bold tracking-tight sm:text-4xl mb-4">
25+
Why Choose Our Apps?
26+
</h2>
27+
<p className="text-lg text-muted-foreground max-w-2xl mx-auto">
28+
Built with the latest technologies and best practices for an exceptional experience
29+
</p>
30+
</div>
31+
32+
<div className="grid grid-cols-1 gap-8 md:grid-cols-2 lg:grid-cols-3">
33+
<Card className="relative overflow-hidden transition-all hover:shadow-lg hover:-translate-y-1">
34+
<div className="absolute top-0 right-0 w-32 h-32 bg-primary/10 rounded-full blur-3xl"></div>
35+
<CardHeader>
36+
<div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10">
37+
<Zap className="h-6 w-6 text-primary" />
38+
</div>
39+
<CardTitle>Lightning Fast</CardTitle>
40+
<CardDescription>
41+
Optimized for speed and performance
42+
</CardDescription>
43+
</CardHeader>
44+
<CardContent>
45+
<p className="text-sm text-muted-foreground">
46+
Static site generation with Next.js ensures your apps load instantly, providing the best user experience.
47+
</p>
48+
</CardContent>
49+
</Card>
50+
51+
<Card className="relative overflow-hidden transition-all hover:shadow-lg hover:-translate-y-1">
52+
<div className="absolute top-0 right-0 w-32 h-32 bg-primary/10 rounded-full blur-3xl"></div>
53+
<CardHeader>
54+
<div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10">
55+
<Palette className="h-6 w-6 text-primary" />
56+
</div>
57+
<CardTitle>Beautiful Design</CardTitle>
58+
<CardDescription>
59+
Modern UI with shadcn/ui components
60+
</CardDescription>
61+
</CardHeader>
62+
<CardContent>
63+
<p className="text-sm text-muted-foreground">
64+
Every component is carefully crafted with attention to detail, accessibility, and responsive design.
65+
</p>
66+
</CardContent>
67+
</Card>
68+
69+
<Card className="relative overflow-hidden transition-all hover:shadow-lg hover:-translate-y-1">
70+
<div className="absolute top-0 right-0 w-32 h-32 bg-primary/10 rounded-full blur-3xl"></div>
71+
<CardHeader>
72+
<div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10">
73+
<Code2 className="h-6 w-6 text-primary" />
74+
</div>
75+
<CardTitle>Open Source</CardTitle>
76+
<CardDescription>
77+
Transparent and community-driven
78+
</CardDescription>
79+
</CardHeader>
80+
<CardContent>
81+
<p className="text-sm text-muted-foreground">
82+
All our apps are open source on GitHub. Contribute, learn, or use them as inspiration for your projects.
83+
</p>
84+
</CardContent>
85+
</Card>
86+
87+
<Card className="relative overflow-hidden transition-all hover:shadow-lg hover:-translate-y-1">
88+
<div className="absolute top-0 right-0 w-32 h-32 bg-primary/10 rounded-full blur-3xl"></div>
89+
<CardHeader>
90+
<div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10">
91+
<Shield className="h-6 w-6 text-primary" />
92+
</div>
93+
<CardTitle>Secure & Private</CardTitle>
94+
<CardDescription>
95+
Your data stays with you
96+
</CardDescription>
97+
</CardHeader>
98+
<CardContent>
99+
<p className="text-sm text-muted-foreground">
100+
We prioritize privacy and security. No tracking, no ads, just useful tools that respect your privacy.
101+
</p>
102+
</CardContent>
103+
</Card>
104+
105+
<Card className="relative overflow-hidden transition-all hover:shadow-lg hover:-translate-y-1">
106+
<div className="absolute top-0 right-0 w-32 h-32 bg-primary/10 rounded-full blur-3xl"></div>
107+
<CardHeader>
108+
<div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10">
109+
<Globe className="h-6 w-6 text-primary" />
110+
</div>
111+
<CardTitle>Works Everywhere</CardTitle>
112+
<CardDescription>
113+
Cross-platform compatibility
114+
</CardDescription>
115+
</CardHeader>
116+
<CardContent>
117+
<p className="text-sm text-muted-foreground">
118+
Access our apps from any device with a modern browser. Responsive design ensures a great experience.
119+
</p>
120+
</CardContent>
121+
</Card>
122+
123+
<Card className="relative overflow-hidden transition-all hover:shadow-lg hover:-translate-y-1">
124+
<div className="absolute top-0 right-0 w-32 h-32 bg-primary/10 rounded-full blur-3xl"></div>
125+
<CardHeader>
126+
<div className="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-lg bg-primary/10">
127+
<Sparkles className="h-6 w-6 text-primary" />
128+
</div>
129+
<CardTitle>Regular Updates</CardTitle>
130+
<CardDescription>
131+
Always improving and evolving
132+
</CardDescription>
133+
</CardHeader>
134+
<CardContent>
135+
<p className="text-sm text-muted-foreground">
136+
We continuously update our apps with new features, improvements, and the latest web technologies.
137+
</p>
138+
</CardContent>
139+
</Card>
140+
</div>
141+
</div>
142+
</section>
143+
144+
{/* CTA Section */}
145+
<section className="relative py-24 px-4 sm:px-6 lg:px-8 overflow-hidden">
146+
<div className="absolute inset-0 bg-primary/5"></div>
147+
<div className="absolute -left-24 top-1/2 h-96 w-96 -translate-y-1/2 rounded-full bg-primary/10 blur-3xl"></div>
148+
<div className="absolute -right-24 top-1/2 h-96 w-96 -translate-y-1/2 rounded-full bg-primary/10 blur-3xl"></div>
149+
150+
<div className="relative mx-auto max-w-4xl text-center">
151+
<h2 className="text-3xl font-bold tracking-tight sm:text-4xl mb-4">
152+
Ready to explore our apps?
153+
</h2>
154+
<p className="text-lg text-muted-foreground mb-8 max-w-2xl mx-auto">
155+
Browse our collection of web applications designed to make your life easier. New apps are added regularly!
156+
</p>
157+
<div className="flex flex-col sm:flex-row gap-4 justify-center">
158+
<Button size="lg" className="group">
159+
Browse All Apps
160+
<ArrowRight className="ml-2 h-4 w-4 transition-transform group-hover:translate-x-1" />
161+
</Button>
162+
<Button size="lg" variant="outline">
163+
View on GitHub
164+
</Button>
165+
</div>
166+
</div>
167+
</section>
168+
</main>
169+
);
170+
}

0 commit comments

Comments
 (0)