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 ( +
+ + Resumé + +
+ ); +} 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