Skip to content

Commit 2b6c0f4

Browse files
author
Fari
authored
Merge pull request #6 from lampungdevtech/feature/landing-page
Build Landing Page
2 parents 668efb6 + fb31780 commit 2b6c0f4

File tree

121 files changed

+11001
-1539
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+11001
-1539
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# See https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
22

3+
/apps/web/.env
4+
35
# compiled output
46
dist
57
tmp

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616
To run the dev server for your app, use:
1717

1818
```sh
19-
npx nx dev lampung-dev-platform
19+
npx nx dev web
2020
```
2121

2222
To create a production bundle:
2323

2424
```sh
25-
npx nx build lampung-dev-platform
25+
npx nx build web
2626
```
2727

2828
To see all available targets to run for a project, run:
2929

3030
```sh
31-
npx nx show project lampung-dev-platform
31+
npx nx show project web
3232
```
3333

3434
These targets are either [inferred automatically](https://nx.dev/concepts/inferred-tasks?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects) or defined in the `project.json` or `package.json` files.

apps/web-e2e/cypress.config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ export default defineConfig({
66
...nxE2EPreset(__filename, {
77
cypressDir: 'src',
88
webServerCommands: {
9-
default: 'yarn nx run @lampung-dev/web:dev',
9+
default: 'yarn nx run @lampung-devtech/web:dev',
1010
},
11-
ciWebServerCommand: 'yarn nx run @lampung-dev/web:start',
11+
ciWebServerCommand: 'yarn nx run @lampung-devtech/web:start',
1212
ciBaseUrl: 'http://localhost:3000',
1313
}),
1414
baseUrl: 'http://127.0.0.1:3000',

apps/web-e2e/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2-
"name": "@lampung-dev/web-e2e",
2+
"name": "@lampung-devtech/web-e2e",
33
"version": "0.0.1",
44
"private": true,
55
"nx": {
66
"implicitDependencies": [
7-
"@lampung-dev/web"
7+
"@lampung-devtech/web"
88
]
99
}
1010
}

apps/web-e2e/src/e2e/app.cy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getGreeting } from '../support/app.po';
22

3-
describe('@lampung-dev/web-e2e', () => {
3+
describe('@lampung-devtech/web-e2e', () => {
44
beforeEach(() => cy.visit('/'));
55

66
it('should display welcome message', () => {

apps/web/.env.example

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
NEXTAUTH_URL=http://localhost:3000
2+
NEXTAUTH_SECRET=NEXTAUTH_SECRET
3+
GOOGLE_CLIENT_ID=GOOGLE_CLIENT_ID
4+
GOOGLE_CLIENT_SECRET=GOOGLE_CLIENT_SECRET
5+
GITHUB_ID=GITHUB_ID
6+
GITHUB_SECRET=GITHUB_SECRET
7+
NEXT_PUBLIC_SUPABASE_URL=NEXT_PUBLIC_SUPABASE_UR
8+
NEXT_PUBLIC_SUPABASE_ANON_KEY=NEXT_PUBLIC_SUPABASE_ANON_KEY
9+
SUPABASE_SERVICE_ROLE_KEY=SUPABASE_SERVICE_ROLE_KEY
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import ComingSoon from '@/app/coming-soon';
2+
export default ComingSoon;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import ComingSoon from '@/app/coming-soon';
2+
export default ComingSoon;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import ComingSoon from '@/app/coming-soon';
2+
export default ComingSoon;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import ComingSoon from '@/app/coming-soon';
2+
export default ComingSoon;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import ComingSoon from '@/app/coming-soon';
2+
export default ComingSoon;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import ComingSoon from '@/app/coming-soon';
2+
export default ComingSoon;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import ComingSoon from '@/app/coming-soon';
2+
export default ComingSoon;

apps/web/app/about/page.tsx

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
"use client";
2+
3+
import { Button } from "@/components/ui/button";
4+
import { Card } from "@/components/ui/card";
5+
import { Users, Heart, Target } from "lucide-react";
6+
import { teamMembers } from "@/constants/team";
7+
8+
export default function AboutPage() {
9+
return (
10+
<div className="min-h-screen">
11+
{/* Hero Section */}
12+
<section className="bg-primary text-primary-foreground py-20">
13+
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
14+
<h1 className="text-4xl md:text-5xl font-bold mb-6">Tentang LampungDevTech</h1>
15+
<p className="text-xl max-w-2xl mx-auto">
16+
Membangun ekosistem teknologi yang kuat di Lampung melalui kolaborasi dan pembelajaran berkelanjutan.
17+
</p>
18+
</div>
19+
</section>
20+
21+
{/* Story Section */}
22+
<section className="py-20">
23+
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
24+
<div className="max-w-3xl mx-auto text-center mb-16">
25+
<h2 className="text-3xl font-bold mb-6">Sejarah Kami</h2>
26+
<p className="text-lg text-muted-foreground mb-6">
27+
LampungDevTech didirikan pada tahun 2023 oleh sekelompok developer yang memiliki visi untuk memajukan ekosistem teknologi di Lampung. Berawal dari meetup informal di kedai kopi, komunitas ini tumbuh menjadi wadah kolaborasi dan pembelajaran bagi para pengembang software di Lampung.
28+
</p>
29+
<p className="text-lg text-muted-foreground">
30+
Kami percaya bahwa Lampung memiliki potensi besar untuk menjadi salah satu pusat teknologi di Indonesia. Dengan membangun komunitas yang kuat dan inklusif, kami berharap dapat membantu mengembangkan talenta-talenta digital lokal dan mendorong pertumbuhan industri teknologi di Lampung.
31+
</p>
32+
</div>
33+
34+
<div className="grid grid-cols-1 md:grid-cols-3 gap-8 mb-16">
35+
<Card className="p-6 text-center">
36+
<Users className="h-12 w-12 mx-auto mb-4 text-primary" />
37+
<h3 className="text-xl font-semibold mb-2">Komunitas Inklusif</h3>
38+
<p className="text-muted-foreground">
39+
Terbuka untuk semua level pengembang, dari pemula hingga expert.
40+
</p>
41+
</Card>
42+
<Card className="p-6 text-center">
43+
<Heart className="h-12 w-12 mx-auto mb-4 text-primary" />
44+
<h3 className="text-xl font-semibold mb-2">Berbagi Pengetahuan</h3>
45+
<p className="text-muted-foreground">
46+
Mendorong budaya berbagi dan pembelajaran berkelanjutan.
47+
</p>
48+
</Card>
49+
<Card className="p-6 text-center">
50+
<Target className="h-12 w-12 mx-auto mb-4 text-primary" />
51+
<h3 className="text-xl font-semibold mb-2">Fokus pada Kualitas</h3>
52+
<p className="text-muted-foreground">
53+
Mengutamakan kualitas dalam setiap program dan kegiatan.
54+
</p>
55+
</Card>
56+
</div>
57+
</div>
58+
</section>
59+
60+
{/* Team Section */}
61+
<section className="py-20 bg-muted/50">
62+
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
63+
<div className="text-center mb-12">
64+
<h2 className="text-3xl font-bold mb-4">Tim Kami</h2>
65+
<p className="text-muted-foreground">
66+
Kenali orang-orang di balik LampungDevTech
67+
</p>
68+
</div>
69+
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
70+
{teamMembers.map((member, index) => (
71+
<Card key={index} className="p-6">
72+
<div className="text-center mb-4">
73+
<img
74+
src={member.image}
75+
alt={member.name}
76+
className="w-24 h-24 rounded-full mx-auto mb-4"
77+
/>
78+
<h3 className="text-xl font-semibold">{member.name}</h3>
79+
<p className="text-sm text-primary mb-2">{member.role}</p>
80+
<p className="text-muted-foreground">{member.description}</p>
81+
</div>
82+
</Card>
83+
))}
84+
</div>
85+
</div>
86+
</section>
87+
88+
{/* Join Section */}
89+
<section className="py-20 bg-primary text-primary-foreground">
90+
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
91+
<h2 className="text-3xl font-bold mb-4">Bergabung dengan Komunitas</h2>
92+
<p className="text-xl mb-8 max-w-2xl mx-auto">
93+
Ayo jadi bagian dari gerakan membangun ekosistem teknologi yang lebih kuat dan berkelanjutan di Lampung!
94+
</p>
95+
<Button size="lg" variant="secondary">
96+
Bergabung Sekarang
97+
</Button>
98+
</div>
99+
</section>
100+
</div>
101+
);
102+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import NextAuth from "next-auth";
2+
import GoogleProvider from "next-auth/providers/google";
3+
import GithubProvider from "next-auth/providers/github";
4+
5+
const handler = NextAuth({
6+
providers: [
7+
GoogleProvider({
8+
clientId: process.env.GOOGLE_CLIENT_ID!,
9+
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
10+
}),
11+
GithubProvider({
12+
clientId: process.env.GITHUB_ID!,
13+
clientSecret: process.env.GITHUB_SECRET!,
14+
}),
15+
],
16+
pages: {
17+
signIn: '/login',
18+
},
19+
callbacks: {
20+
async session({ session, token }) {
21+
try {
22+
if (token?.sub && session.user) {
23+
session.user.id = token.sub;
24+
}
25+
return session;
26+
} catch (error) {
27+
console.error("Session callback error:", error);
28+
return session;
29+
}
30+
},
31+
async jwt({ token, user }) {
32+
try {
33+
if (user?.id) {
34+
token.id = user.id;
35+
}
36+
return token;
37+
} catch (error) {
38+
console.error("JWT callback error:", error);
39+
return token;
40+
}
41+
},
42+
async redirect({ url, baseUrl }) {
43+
try {
44+
if (url.startsWith(baseUrl) && process.env.PASS_TO_DASHBOARD === 'true') {
45+
return `${baseUrl}/dashboard`;
46+
}
47+
return url.startsWith(baseUrl) ? url : baseUrl;
48+
} catch (error) {
49+
console.error("Redirect callback error:", error);
50+
return baseUrl;
51+
}
52+
},
53+
},
54+
secret: process.env.NEXTAUTH_SECRET!,
55+
});
56+
57+
export { handler as GET, handler as POST };

apps/web/app/coming-soon.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"use client";
2+
3+
import Link from 'next/link';
4+
import { Button } from '@/components/ui/button';
5+
import { Home, Construction } from 'lucide-react';
6+
7+
export default function ComingSoon() {
8+
return (
9+
<div className="min-h-screen flex items-center justify-center">
10+
<div className="max-w-2xl mx-auto px-4 py-8 text-center">
11+
<Construction className="h-24 w-24 mx-auto mb-8 text-primary" />
12+
<h1 className="text-4xl font-bold text-primary mb-4">Segera Hadir!</h1>
13+
<p className="text-xl text-muted-foreground mb-8">
14+
Halaman ini sedang dalam pengembangan. Kami sedang bekerja keras untuk menghadirkan konten terbaik untuk Anda.
15+
</p>
16+
<Button asChild>
17+
<Link href="/">
18+
<Home className="mr-2 h-4 w-4" />
19+
Kembali ke Beranda
20+
</Link>
21+
</Button>
22+
</div>
23+
</div>
24+
);
25+
}

0 commit comments

Comments
 (0)