Skip to content

Commit 00c1b05

Browse files
committed
Initial commit.
0 parents  commit 00c1b05

31 files changed

+1933
-0
lines changed

.github/workflows/nextjs.yml

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# Sample workflow for building and deploying a Next.js site to GitHub Pages
2+
#
3+
# To get started with Next.js see: https://nextjs.org/docs/getting-started
4+
#
5+
name: Deploy Next.js site to Pages
6+
7+
on:
8+
# Runs on pushes targeting the default branch
9+
# TODO: Update to pull requests into main
10+
push:
11+
branches: ["main"]
12+
13+
# Allows you to run this workflow manually from the Actions tab
14+
workflow_dispatch:
15+
16+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
17+
permissions:
18+
contents: read
19+
pages: write
20+
id-token: write
21+
22+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
23+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
24+
concurrency:
25+
group: "pages"
26+
cancel-in-progress: false
27+
28+
jobs:
29+
# Build job
30+
build:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- name: Checkout
34+
uses: actions/checkout@v4
35+
- name: Pnpm checkout
36+
uses: pnpm/action-setup@v3
37+
with:
38+
version: 8
39+
40+
- name: Detect package manager
41+
id: detect-package-manager
42+
run: |
43+
if [ -f "${{ github.workspace }}/yarn.lock" ]; then
44+
echo "manager=yarn" >> $GITHUB_OUTPUT
45+
echo "command=install" >> $GITHUB_OUTPUT
46+
echo "runner=yarn" >> $GITHUB_OUTPUT
47+
exit 0
48+
elif [ -f "${{ github.workspace }}/pnpm-lock.yaml" ]; then
49+
echo "manager=pnpm" >> $GITHUB_OUTPUT
50+
echo "command=install" >> $GITHUB_OUTPUT
51+
echo "runner=pnpm" >> $GITHUB_OUTPUT
52+
elif [ -f "${{ github.workspace }}/package.json" ]; then
53+
echo "manager=npm" >> $GITHUB_OUTPUT
54+
echo "command=ci" >> $GITHUB_OUTPUT
55+
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
56+
exit 0
57+
else
58+
echo "Unable to determine package manager"
59+
exit 1
60+
fi
61+
- name: Setup Node
62+
uses: actions/setup-node@v4
63+
with:
64+
node-version: "20"
65+
cache: ${{ steps.detect-package-manager.outputs.manager }}
66+
- name: Setup Pages
67+
uses: actions/configure-pages@v5
68+
with:
69+
# Automatically inject basePath in your Next.js configuration file and disable
70+
# server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
71+
#
72+
# You may remove this line if you want to manage the configuration yourself.
73+
static_site_generator: next
74+
- name: Restore cache
75+
uses: actions/cache@v4
76+
with:
77+
path: |
78+
.next/cache
79+
# Generate a new cache whenever packages or source files change.
80+
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/pnpm-lock.yaml', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
81+
# If source files changed but packages didn't, rebuild from a prior cache.
82+
restore-keys: |
83+
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json','**/pnpm-lock.yaml', '**/yarn.lock') }}-
84+
- name: Install dependencies
85+
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
86+
- name: Build with Next.js
87+
run: ${{ steps.detect-package-manager.outputs.runner }} next build
88+
- name: Upload artifact
89+
uses: actions/upload-pages-artifact@v3
90+
with:
91+
path: ./out
92+
93+
# Deployment job
94+
deploy:
95+
environment:
96+
name: github-pages
97+
url: ${{ steps.deployment.outputs.page_url }}
98+
runs-on: ubuntu-latest
99+
needs: build
100+
steps:
101+
- name: Deploy to GitHub Pages
102+
id: deployment
103+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.*
7+
.yarn/*
8+
!.yarn/patches
9+
!.yarn/plugins
10+
!.yarn/releases
11+
!.yarn/versions
12+
13+
# testing
14+
/coverage
15+
16+
# next.js
17+
/.next/
18+
/out/
19+
20+
# production
21+
/build
22+
/dist/
23+
24+
# misc
25+
.DS_Store
26+
*.pem
27+
28+
# debug
29+
npm-debug.log*
30+
yarn-debug.log*
31+
yarn-error.log*
32+
.pnpm-debug.log*
33+
34+
# env files (can opt-in for committing if needed)
35+
.env*
36+
37+
# vercel
38+
.vercel
39+
40+
# typescript
41+
*.tsbuildinfo
42+
next-env.d.ts

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
2+
3+
## Getting Started
4+
5+
First, run the development server:
6+
7+
```bash
8+
npm run dev
9+
# or
10+
yarn dev
11+
# or
12+
pnpm dev
13+
# or
14+
bun dev
15+
```
16+
17+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18+
19+
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
20+
21+
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
22+
23+
## Learn More
24+
25+
To learn more about Next.js, take a look at the following resources:
26+
27+
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28+
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
29+
30+
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
31+
32+
## Deploy on Vercel
33+
34+
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
35+
36+
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.

app/favicon.ico

25.3 KB
Binary file not shown.

app/globals.css

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
html,
2+
body {
3+
max-width: 100vw;
4+
scroll-padding-top: 100px;
5+
}
6+
7+
body {
8+
color: black;
9+
background: #f4f0e0;
10+
font-family: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;
11+
}
12+
13+
* {
14+
box-sizing: border-box;
15+
padding: 0;
16+
margin: 0;
17+
}
18+
19+
a {
20+
color: inherit;
21+
text-decoration: none;
22+
}

app/layout.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import type { Metadata } from "next";
2+
import { Geist, Geist_Mono } from "next/font/google";
3+
import "./globals.css";
4+
5+
const geistSans = Geist({
6+
variable: "--font-geist-sans",
7+
subsets: ["latin"],
8+
});
9+
10+
const geistMono = Geist_Mono({
11+
variable: "--font-geist-mono",
12+
subsets: ["latin"],
13+
});
14+
15+
export const metadata: Metadata = {
16+
title: "Create Next App",
17+
description: "Generated by create next app",
18+
};
19+
20+
export default function RootLayout({
21+
children,
22+
}: Readonly<{
23+
children: React.ReactNode;
24+
}>) {
25+
return (
26+
<html lang="en">
27+
<body className={`${geistSans.variable} ${geistMono.variable}`}>
28+
{children}
29+
</body>
30+
</html>
31+
);
32+
}

app/page.module.css

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
.top_bar {
2+
position: sticky;
3+
top: 0;
4+
z-index: 100;
5+
}
6+
7+
.page {
8+
display: flex;
9+
/* height: 100vh; */
10+
justify-content: center;
11+
}
12+
13+
.main {
14+
/* width: 100%; */
15+
flex: 3;
16+
display: flex;
17+
flex-direction: column;
18+
gap: 10rem;
19+
padding-top: 100px;
20+
}
21+
22+
.left_bar {
23+
flex: 1;
24+
display: flex;
25+
width: 100%;
26+
}
27+
28+
.right_bar {
29+
flex: 1;
30+
display: flex;
31+
width: 100%;
32+
}

app/page.tsx

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import Image from "next/image";
2+
import styles from "./page.module.css";
3+
import About from "@/app/ui/about";
4+
import TopNav from "@/app/ui/top-nav";
5+
import Experience from "./ui/experience";
6+
import Contact from "./ui/contact";
7+
import Sidebar from "./ui/sidebar";
8+
import Introduction from "./ui/introduction";
9+
import Projects from "./ui/projects";
10+
11+
export default function Home() {
12+
return (
13+
<>
14+
<div className={styles.top_bar}>
15+
<TopNav />
16+
</div>
17+
<div className={styles.page}>
18+
<div className={styles.left_bar}>
19+
<Sidebar />
20+
</div>
21+
<main className={styles.main}>
22+
<section id="introduction" className={styles.introduction}>
23+
<Introduction />
24+
</section>
25+
<section id="about" className={styles.about}>
26+
<About />
27+
</section>
28+
<section id="experience" className={styles.experience}>
29+
<Experience />
30+
</section>
31+
<section id="projects" className={styles.projects}>
32+
<Projects />
33+
</section>
34+
<section id="contact" className={styles.contact}>
35+
<Contact />
36+
</section>
37+
</main>
38+
<div className={styles.right_bar}>
39+
<Sidebar />
40+
</div>
41+
</div>
42+
</>
43+
);
44+
}

app/ui/about.module.css

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
.about_container {
2+
padding-top: 20px;
3+
padding-left: 30px;
4+
padding-right: 30px;
5+
margin-left: 20%;
6+
height: 680px;
7+
background-color: #2e2e2e;
8+
opacity: 0.7;
9+
color: #f4f0e0;
10+
}
11+
12+
.about_header {
13+
display: flex;
14+
align-items: center;
15+
16+
font-size: 1.5rem;
17+
font-weight: bold;
18+
text-transform: uppercase;
19+
letter-spacing: 0.1em;
20+
margin: 2rem 0;
21+
}
22+
23+
.about_header::after {
24+
content: "";
25+
flex: 1;
26+
border-bottom: 2px solid #f4f0e0;
27+
}
28+
29+
.about {
30+
font-size: 1rem;
31+
width: 70%;
32+
margin-bottom: 1.5rem;
33+
line-height: 1.6;
34+
}
35+
36+
.technologies_list {
37+
width: 50%;
38+
padding-left: 30px;
39+
display: grid;
40+
grid-template-columns: repeat(2, minmax(0, 1fr)); /* two equal columns */
41+
gap: 0.5rem 0.5rem; /* row gap, column gap */
42+
/* list-style: none; */
43+
/* padding: 0; */
44+
margin: 1rem 0;
45+
}

0 commit comments

Comments
 (0)