Skip to content

Commit c3744e6

Browse files
committed
Initial commit: portfolio site (React, Vite, GitHub Pages)
0 parents  commit c3744e6

107 files changed

Lines changed: 16950 additions & 0 deletions

File tree

Some content is hidden

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

.github/workflows/deploy-pages.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
permissions:
8+
contents: read
9+
pages: write
10+
id-token: write
11+
12+
concurrency:
13+
group: "pages"
14+
cancel-in-progress: false
15+
16+
jobs:
17+
build:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- uses: actions/checkout@v4
21+
22+
- name: Setup Node
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: "20"
26+
cache: "npm"
27+
28+
- name: Install
29+
run: npm install
30+
31+
- name: Build
32+
run: npm run build
33+
34+
- name: Verify dist
35+
run: ls -la dist && head -20 dist/index.html
36+
37+
- name: Setup Pages
38+
uses: actions/configure-pages@v4
39+
40+
- name: Upload artifact
41+
uses: actions/upload-pages-artifact@v3
42+
with:
43+
path: dist
44+
45+
deploy:
46+
environment:
47+
name: github-pages
48+
url: ${{ steps.deploy.outputs.page_url }}
49+
runs-on: ubuntu-latest
50+
needs: build
51+
steps:
52+
- name: Deploy to GitHub Pages
53+
id: deploy
54+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
node_modules
11+
dist
12+
dist-ssr
13+
*.local
14+
15+
.lovable
16+
.playwright-mcp
17+
18+
# Editor directories and files
19+
.vscode/*
20+
!.vscode/extensions.json
21+
.idea
22+
.DS_Store
23+
*.suo
24+
*.ntvs*
25+
*.njsproj
26+
*.sln
27+
*.sw?

README.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# dibbed
2+
3+
Portfolio / resume site.
4+
5+
- **Live:** [https://dibbed.github.io/](https://dibbed.github.io/)
6+
- **GitHub:** [https://github.com/dibbed](https://github.com/dibbed)
7+
8+
Stack: Vite, TypeScript, React, shadcn-ui, Tailwind CSS, Framer Motion, React Router.
9+
10+
---
11+
12+
## Run locally
13+
14+
```sh
15+
git clone https://github.com/dibbed/dibbed.github.io
16+
cd dibbed.github.io
17+
npm i
18+
npm run dev
19+
```
20+
21+
## Scripts
22+
23+
| Command | Description |
24+
|-------------------|--------------------|
25+
| `npm run dev` | Dev server |
26+
| `npm run build` | Production build |
27+
| `npm run preview`| Preview build |
28+
| `npm run lint` | ESLint |
29+
| `npm run test` | Vitest |
30+
31+
---
32+
33+
## Deploy (GitHub Pages)
34+
35+
1. In the repo: **Settings → Pages → Build and deployment → Source****GitHub Actions**.
36+
2. Push to `main`. The workflow builds and deploys; site: **https://dibbed.github.io/**.
37+
38+
To have the site at the root URL above, use a repo named `dibbed.github.io` under the [dibbed](https://github.com/dibbed) account.
39+
40+
### Resume (Download CV)
41+
42+
Place your PDF as `public/resume.pdf`, then commit and push. After deploy, the “Download CV” link and **https://dibbed.github.io/resume.pdf** will work.
43+
44+
### Troubleshooting
45+
46+
- **Blank page / 404 for `/src/main.tsx`** — Source is still “Deploy from a branch”. Switch to **GitHub Actions**.
47+
- **Download CV saves a broken file** — Ensure `public/resume.pdf` exists and is pushed; redeploy.

bun.lockb

240 KB
Binary file not shown.

components.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "default",
4+
"rsc": false,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "tailwind.config.ts",
8+
"css": "src/index.css",
9+
"baseColor": "slate",
10+
"cssVariables": true,
11+
"prefix": ""
12+
},
13+
"aliases": {
14+
"components": "@/components",
15+
"utils": "@/lib/utils",
16+
"ui": "@/components/ui",
17+
"lib": "@/lib",
18+
"hooks": "@/hooks"
19+
}
20+
}

eslint.config.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import js from "@eslint/js";
2+
import globals from "globals";
3+
import reactHooks from "eslint-plugin-react-hooks";
4+
import reactRefresh from "eslint-plugin-react-refresh";
5+
import tseslint from "typescript-eslint";
6+
7+
export default tseslint.config(
8+
{ ignores: ["dist"] },
9+
{
10+
extends: [js.configs.recommended, ...tseslint.configs.recommended],
11+
files: ["**/*.{ts,tsx}"],
12+
languageOptions: {
13+
ecmaVersion: 2020,
14+
globals: globals.browser,
15+
},
16+
plugins: {
17+
"react-hooks": reactHooks,
18+
"react-refresh": reactRefresh,
19+
},
20+
rules: {
21+
...reactHooks.configs.recommended.rules,
22+
"react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
23+
"@typescript-eslint/no-unused-vars": "off",
24+
},
25+
},
26+
);

index.html

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Ali Khalili — Senior Python Backend Engineer</title>
7+
<meta name="description" content="Senior Python Backend Engineer. 6.5+ years building high-concurrency systems, RAG/LLM pipelines & scalable APIs. FastAPI · AsyncIO · 400K+ users. Portfolio, resume & contact.">
8+
<meta property="og:type" content="website" />
9+
<meta property="og:title" content="Ali Khalili — Senior Python Backend Engineer" />
10+
<meta property="og:description" content="Senior Python Backend Engineer. 6.5+ years building high-concurrency systems, RAG/LLM pipelines & scalable APIs. FastAPI · AsyncIO · Portfolio & contact." />
11+
<meta property="og:image" content="./placeholder.svg" />
12+
<meta name="twitter:card" content="summary_large_image" />
13+
<meta name="twitter:title" content="Ali Khalili — Senior Python Backend Engineer" />
14+
<meta name="twitter:description" content="Senior Python Backend Engineer. 6.5+ years building high-concurrency systems, RAG/LLM pipelines & scalable APIs. Portfolio & contact." />
15+
<meta name="twitter:image" content="./placeholder.svg" />
16+
</head>
17+
<body>
18+
<div id="root"></div>
19+
<script type="module" src="/src/main.tsx"></script>
20+
</body>
21+
</html>

0 commit comments

Comments
 (0)