diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
new file mode 100644
index 0000000..eee8a2d
--- /dev/null
+++ b/.github/workflows/deploy.yml
@@ -0,0 +1,35 @@
+name: Docker Deploy
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+jobs:
+ build-and-push:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Login to Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ${{ secrets.REPO_HOST }}
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.DEPLOY_TOKEN }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ platforms: linux/amd64,linux/arm64
+ push: true
+ tags: |
+ ${{ secrets.REPO_HOST }}/${{ github.repository_owner }}/${{ github.event.repository.name }}:${{ github.sha }}
+ ${{ secrets.REPO_HOST }}/${{ github.repository_owner }}/${{ github.event.repository.name }}:latest
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..831c486
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,30 @@
+FROM denoland/deno:alpine AS builder
+
+WORKDIR /app
+
+COPY deno.json import_map.json ./
+COPY dev.ts main.ts .env* ./
+
+COPY components/ ./components/
+COPY islands/ ./islands/
+COPY lib/ ./lib/
+COPY posts/ ./posts/
+COPY routes/ ./routes/
+COPY static/ ./static/
+COPY utils/ ./utils/
+
+RUN deno cache main.ts
+
+FROM denoland/deno:alpine
+
+WORKDIR /app
+
+COPY --from=builder /deno-dir/ /deno-dir/
+COPY --from=builder /app/ /app/
+
+ENV DENO_DEPLOYMENT=production
+
+EXPOSE 8000
+
+# Run the server
+CMD ["run", "-A", "main.ts"]
diff --git a/components/HomeButtonLinks.tsx b/components/HomeButtonLinks.tsx
new file mode 100644
index 0000000..a6cc2f9
--- /dev/null
+++ b/components/HomeButtonLinks.tsx
@@ -0,0 +1,15 @@
+export default function HomeButtonLinks() {
+ return (
+
+ );
+}
diff --git a/components/SocialLinks.tsx b/components/SocialLinks.tsx
index b076f62..e723762 100644
--- a/components/SocialLinks.tsx
+++ b/components/SocialLinks.tsx
@@ -4,10 +4,41 @@ import { SiBluesky, SiForgejo, SiRss } from "@preact-icons/si";
export default function SocialLinks() {
return (
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
}
diff --git a/components/TechLinks.tsx b/components/TechLinks.tsx
index 8802ba3..cc03ec0 100644
--- a/components/TechLinks.tsx
+++ b/components/TechLinks.tsx
@@ -11,13 +11,75 @@ import {
export default function TechLinks() {
return (
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
);
}
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..7a63353
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,13 @@
+version: '3.8'
+
+services:
+ app:
+ image: ${IMAGE:-ghcr.io/yourusername/your-fresh-project:latest}
+ restart: unless-stopped
+ environment:
+ - DENO_DEPLOYMENT=production
+ ports:
+ - "3000:8000"
+ # If you need to persist any data
+ volumes:
+ - ./data:/app/data
\ No newline at end of file
diff --git a/routes/_layout.tsx b/routes/_layout.tsx
index 480b359..10a5fda 100644
--- a/routes/_layout.tsx
+++ b/routes/_layout.tsx
@@ -1,7 +1,7 @@
// routes/_layout.tsx
import { PageProps } from "$fresh/server.ts";
import { Head } from "$fresh/runtime.ts";
-import { LuBook, LuBriefcase, LuHouse } from "@preact-icons/lu";
+import { LuCodeXml, LuHouse, LuNotebookPen } from "@preact-icons/lu";
export default function Layout({ Component, url }: PageProps) {
const currentPath = url.pathname;
@@ -34,7 +34,7 @@ export default function Layout({ Component, url }: PageProps) {
class={currentPath.startsWith("/posts") ? "menu-active" : ""}
>
-
+
@@ -44,7 +44,7 @@ export default function Layout({ Component, url }: PageProps) {
class={currentPath.startsWith("/projects") ? "menu-active" : ""}
>
-
+
diff --git a/routes/index.tsx b/routes/index.tsx
index 4372a74..e38bba6 100644
--- a/routes/index.tsx
+++ b/routes/index.tsx
@@ -1,3 +1,4 @@
+import HomeButtonLinks from "../components/HomeButtonLinks.tsx";
import SocialLinks from "../components/SocialLinks.tsx";
import TechLinks from "../components/TechLinks.tsx";
@@ -22,6 +23,8 @@ export default function Home() {
Stuff I Use:
+
+
>
);
}
diff --git a/static/files/Atridad_Lahiji_Resume_Public.pdf b/static/files/Atridad_Lahiji_Resume_Public.pdf
new file mode 100644
index 0000000..c14ebbe
Binary files /dev/null and b/static/files/Atridad_Lahiji_Resume_Public.pdf differ