Initial commit

This commit is contained in:
2026-01-16 15:37:46 +02:00
commit c801068c16
4 changed files with 1615 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
name: Build
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to build'
required: true
default: 'main'
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout branch
uses: actions/checkout@v3
with:
ref: ${{ gitea.event.inputs.branch }}
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 24
- name: Install dependencies
run: |
set -euo pipefail
npm ci --prefer-offline --no-audit --silent 2>&1 | tee install.log
env:
NODE_OPTIONS: '--max-old-space-size=4096'
- name: Build (next build)
run: |
set -euo pipefail
npm run build 2>&1 | tee build.log
env:
NODE_ENV: production
NEXT_TELEMETRY_DISABLED: 1
NODE_OPTIONS: '--max-old-space-size=4096'
timeout-minutes: 5
- name: Upload logs on failure
if: failure()
uses: actions/upload-artifact@v3
with:
name: build-logs
path: |
install.log
build.log
if-no-files-found: ignore
- name: Build completed
if: success()
run: echo "Build completed successfully"

1237
src/app/layout.tsx Normal file

File diff suppressed because it is too large Load Diff

314
src/app/page.tsx Normal file
View File

@@ -0,0 +1,314 @@
"use client";
import { ThemeProvider } from '@/components/theme/ThemeProvider';
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
import HeroOverlay from '@/components/sections/hero/HeroOverlay';
import SplitAbout from '@/components/sections/about/SplitAbout';
import PricingCardThree from '@/components/sections/pricing/PricingCardThree';
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
import ContactCenter from '@/components/sections/contact/ContactCenter';
import MediaAbout from '@/components/sections/about/MediaAbout';
import FeatureCardOne from '@/components/sections/feature/FeatureCardOne';
import ContactText from '@/components/sections/contact/ContactText';
import FaqBase from '@/components/sections/faq/FaqBase';
import FooterBase from '@/components/sections/footer/FooterBase';
import { Star, Play, Users, BookOpen, Award, Shield, Zap, Code, Database, TestTube } from 'lucide-react';
export default function Home() {
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="aurora"
cardStyle="glass-elevated"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
theme={{
"--background": "#0a0a0a",
"--card": "#1a1a1a",
"--foreground": "#f0f8ffe6",
"--primary-cta": "#cee7ff",
"--secondary-cta": "#1a1a1a",
"--accent": "#737373",
"--background-accent": "#737373"
}}
>
<NavbarStyleApple
navItems={[
{ name: 'Our Website', id: 'https://nestjs.com' },
{ name: 'Enterprise', id: 'enterprise' },
{ name: 'Resources', id: 'resources' }
]}
brandName="NestJS"
/>
<HeroOverlay
title="Official NestJS Courses"
description="Learn everything you need to master NestJS and tackle modern backend applications at any scale."
imageSrc="https://courses.nestjs.com/header-1.45e257d5.jpg"
imageAlt="NestJS Course Hero"
textPosition="center"
showBlur={true}
showDimOverlay={true}
buttons={[
{ text: 'See courses', href: '#courses' }
]}
/>
<SplitAbout
title="NestJS Fundamentals Course"
description="Get up to speed with NestJS fast. Master the building blocks and essential concepts behind creating your own enterprise-grade applications. Prepare for an in-depth guided course & walk-through of all the fundamentals of a NestJS application from the Creator Kamil Mysliwiec himself, and Mark Pieszak (Core Team Member)."
textboxLayout="default"
useInvertedBackground="noInvert"
bulletPoints={[
{ title: 'Step-by-step lesson progression', description: 'Code everything alongside us!', icon: Play },
{ title: '80 videos with subtitles', description: 'Over 5 hours of content', icon: BookOpen },
{ title: 'Real-world REST API', description: 'Build a complete application with NestJS', icon: Code },
{ title: 'SQL & NoSQL databases', description: 'Learn to interact with both database types', icon: Database },
{ title: 'Official Certificate', description: 'NestJS Certificate of Completion', icon: Award }
]}
imageSrc="https://courses.nestjs.com/photo-kamil.606d0144.png"
imageAlt="Kamil Mysliwiec - Creator of NestJS"
imagePosition="right"
buttons={[
{ text: 'Purchase Now', href: '#pricing' },
{ text: 'Learn More', href: '#details' }
]}
/>
<PricingCardThree
plans={[
{
id: 'fundamentals',
badge: 'Save 25% - Only 11 days left!',
price: '$129.99',
name: 'NestJS Fundamentals Course',
buttons: [
{ text: 'Purchase Now', href: '#purchase' },
{ text: 'Contact for Team Discount', href: '#contact' }
],
features: [
'Step-by-step lesson progression',
'80 videos with subtitles and over 5 hours of content',
'Build a real-world REST API application',
'Learn all the most important NestJS building blocks',
'Interact with both SQL & NoSQL databases',
'Official NestJS Certificate of Completion'
]
}
]}
title="Get Started with NestJS"
description="Master the fundamentals with our comprehensive course"
textboxLayout="default"
animationType="slide-up"
useInvertedBackground="noInvert"
/>
<MetricCardEleven
metrics={[
{
id: '1',
value: '80+',
title: 'Video Lessons',
description: 'Step-by-step guided tutorials',
imageSrc: 'https://courses.nestjs.com/books.08f0b6d9.svg',
imageAlt: 'Course content'
},
{
id: '2',
value: '5+',
title: 'Hours of Content',
description: 'Comprehensive learning experience',
imageSrc: 'https://courses.nestjs.com/corp.3d82653b.svg',
imageAlt: 'Learning time'
}
]}
title="Course Highlights"
description="Everything you need to master NestJS development"
textboxLayout="default"
animationType="slide-up"
useInvertedBackground="noInvert"
/>
<FeatureCardOne
features={[
{
title: 'Getting Started',
description: '4 lessons covering NestJS introduction, CLI installation, and application structure',
imageSrc: 'https://courses.nestjs.com/logo-small-gradient.76616405.svg',
imageAlt: 'Getting Started'
},
{
title: 'REST API Development',
description: '15 lessons on creating a complete REST API application',
imageSrc: 'https://courses.nestjs.com/network.87de5857.svg',
imageAlt: 'REST API'
},
{
title: 'Database Integration',
description: '13 lessons on PostgreSQL with TypeORM and MongoDB with Mongoose',
imageSrc: 'https://courses.nestjs.com/diamond.ecfa463f.svg',
imageAlt: 'Database'
},
{
title: 'Dependency Injection',
description: '11 lessons covering the core concepts of dependency injection',
imageSrc: 'https://courses.nestjs.com/padlock.00488851.svg',
imageAlt: 'Dependency Injection'
}
]}
title="What's inside the course..."
description="Comprehensive modules covering all aspects of NestJS development"
textboxLayout="default"
gridVariant="uniform-all-items-equal"
animationType="slide-up"
useInvertedBackground="noInvert"
/>
<MediaAbout
title="Who is using Nest?"
description="Nest is proudly powering a large ecosystem of enterprises and products out there. Wanna see your logo here? Find out more."
imageSrc="https://courses.nestjs.com/sanofi.b18c1526.png"
imageAlt="Companies using NestJS"
useInvertedBackground="noInvert"
/>
<MediaAbout
title="Preview a featured lesson"
description="Add Pointcuts with Interceptors • NestJS Fundamentals"
imageSrc="https://courses.nestjs.com/no-preview-video.876718d4.jpeg"
imageAlt="Featured lesson preview"
useInvertedBackground="noInvert"
/>
<FeatureCardOne
features={[
{
title: 'All-in-One bundle',
description: 'All courses - 202 lessons, +17 hours - $349',
imageSrc: 'https://courses.nestjs.com/books.08f0b6d9.svg',
imageAlt: 'All courses bundle'
},
{
title: 'Authentication and Authorization',
description: '19 lessons, 2 hours - $79',
imageSrc: 'https://courses.nestjs.com/padlock.00488851.svg',
imageAlt: 'Authentication course'
},
{
title: 'Architecture and Advanced patterns',
description: '21 lessons, 2.5 hours - $95',
imageSrc: 'https://courses.nestjs.com/architecture.dcd277be.svg',
imageAlt: 'Architecture course'
},
{
title: 'GraphQL - Code first',
description: '23 lessons, 2 hours - $39',
imageSrc: 'https://courses.nestjs.com/graphql.44860e93.svg',
imageAlt: 'GraphQL course'
},
{
title: 'Microservices',
description: '20 lessons, 2 hours - $59',
imageSrc: 'https://courses.nestjs.com/network.87de5857.svg',
imageAlt: 'Microservices course'
},
{
title: 'Advanced concepts',
description: '18 lessons, 2 hours - $69',
imageSrc: 'https://courses.nestjs.com/diamond.ecfa463f.svg',
imageAlt: 'Advanced concepts course'
}
]}
title="Course Extensions"
description="Official NestJS Course Extensions will help you take your applications to the next level, while learning much more about the Node.js ecosystem, and other vastly important technologies."
textboxLayout="default"
gridVariant="uniform-all-items-equal"
animationType="slide-up"
useInvertedBackground="noInvert"
buttons={[
{ text: 'Explore course extensions', href: '#extensions' }
]}
/>
<ContactText
text="Does your team need additional support? Nest core team members can work directly with your team on a daily basis to help take your project to the next-level. Let us partner with you and your team to develop the most ambitious projects."
animationType="entrance-slide"
buttons={[
{ text: 'Read more', href: '#support' }
]}
useInvertedBackground="noInvert"
/>
<FaqBase
faqs={[
{
id: '1',
title: 'Do courses have subtitles (Closed Captions)?',
content: 'Yes! All courses have subtitles (Closed Captions) and full written transcripts for each lesson in English.'
},
{
id: '2',
title: 'How long do I have access to the course?',
content: 'All course purchases have unlimited lifetime access & free updates. No subscriptions needed, you can access the course anytime, forever.'
},
{
id: '3',
title: 'What are my payment options?',
content: 'Our online checkout accepts all major Credit Cards and Google Pay. Checkout is a fully secure 128-bit SSL encrypted payment system through Stripe.'
},
{
id: '4',
title: 'Do you offer large team discounts?',
content: 'Yes of course! Please contact us at support@nestjs.com about the size of your team, and we can help you purchase all course licenses with discount codes.'
},
{
id: '5',
title: 'Can I share my course with someone else?',
content: 'Each purchase is limited to ONE license & user viewing the course. Our licensing agreement prohibits any form of sharing. Account activity is tracked and abuse of copyright taken very seriously. If you are purchasing for larger teams (10+) shoot us an email at support@nestjs.com to retrieve a large-team discount code.'
},
{
id: '6',
title: 'Do I receive a certificate of completion?',
content: 'Yes. When completing each course you will receive an official Certificate indicating that you have completed each Nest certified course. You can download an official certificate of completion that can be used to be reimbursed by your employer or land that dream job you are applying for.'
}
]}
title="Frequently Asked Questions"
description="Got a question? Find answers to the most common questions below."
textboxLayout="default"
useInvertedBackground="noInvert"
animationType="smooth"
/>
<ContactCenter
tag="Newsletter"
title="Join our Newsletter"
description="Subscribe to stay up to date with the latest Nest updates, features, and upcoming course updates!"
useInvertedBackground="noInvert"
inputPlaceholder="Enter your email"
buttonText="Subscribe"
termsText="By subscribing you agree to receive updates from NestJS."
onSubmit={(email) => console.log('Newsletter signup:', email)}
/>
<FooterBase
columns={[
{
title: 'Official',
items: [
{ label: 'NestJS Consulting', href: 'https://trilon.io' },
{ label: 'Kamil Mysliwiec', href: '#' },
{ label: 'Jakub Staron', href: '#' }
]
}
]}
logoText="NestJS"
copyrightText="Copyright © 2017-2026 Kamil Mysliwiec"
onPrivacyClick={() => console.log('Privacy clicked')}
/>
</ThemeProvider>
);
}

5
vercel.json Normal file
View File

@@ -0,0 +1,5 @@
{
"installCommand": "npm ci",
"buildCommand": "npm run build",
"outputDirectory": ".next"
}