Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 47 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,51 @@
.github
.idea
tests
# Git
.git
.gitignore
.gitattributes

# Docker
.dockerignore
docker-compose.yml
docker/

# Node
node_modules
npm-debug.log
.npmrc
.nvmrc

# Editor/IDE
.idea
.vscode
.editorconfig

# OS
.DS_Store
Thumbs.db

# Project specific
.github
tests
.env
.env.example
.env.local
.env.development.local
.env.test.local
.env.production.local
dist
coverage
build
caddy

# Other
LICENSE
README.md
Makefile
*.md

# Config files not needed for build
.prettierrc.json
.prettierignore
eslint.config.js
vitest.config.ts

21 changes: 11 additions & 10 deletions caddy/WebCaddyfile.local
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@
respond 204
}

# CORS on normal requests
@localOrigin header Origin http://localhost:5173

header @localOrigin Access-Control-Allow-Origin "http://localhost:5173"

# CORS headers for all requests
header {
Vary "Origin"
X-Frame-Options "SAMEORIGIN"
Expand All @@ -28,11 +24,16 @@

# --- Local relay: strip /relay and call host API (no TLS) ---
handle_path /relay/* {
uri replace ^/relay /api

reverse_proxy {$RELAY_UPSTREAM:http://host.docker.internal:8080} {
header_up Host {upstream_hostport}
}
# In local mode, proxy to API Caddy which expects /api prefix
# handle_path strips /relay, so /relay/generate-signature becomes /generate-signature
# We prepend /api to the path before forwarding
rewrite * /api{uri}

reverse_proxy {$RELAY_UPSTREAM:http://host.docker.internal:18080} {
header_up Host {upstream_hostport}
# explicitly forward Origin so the Go CORS middleware can emit headers
header_up Origin {http.request.header.Origin}
}
}

# --- Serve SPA (simple) ---
Expand Down
4 changes: 3 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ services:
ports:
- "5173:80"
environment:
- RELAY_UPSTREAM=http://host.docker.internal:8080
- RELAY_UPSTREAM=http://host.docker.internal:18080
volumes:
- ./dist:/usr/share/caddy:ro
- ./caddy/mtls:/etc/caddy/mtls:ro
Expand All @@ -77,6 +77,7 @@ services:
user: "${UID:-1000}:${GID:-1000}"
volumes:
- .:/app
- oullin_web_node_modules:/app/node_modules
profiles:
- local
depends_on:
Expand All @@ -97,3 +98,4 @@ networks:
volumes:
oullin_web_data:
oullin_web_config:
oullin_web_node_modules:
2 changes: 1 addition & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ export default [
},

{
files: ['src/partials/EducationPartial.vue', 'src/partials/RecommendationPartial.vue', 'src/pages/PostPage.vue'],
files: ['src/partials/ArticleItemPartial.vue', 'src/partials/EducationPartial.vue', 'src/partials/RecommendationPartial.vue', 'src/pages/PostPage.vue'],
rules: {
'vue/no-v-html': 'off',
},
Expand Down
6 changes: 2 additions & 4 deletions src/components/WidgetSkillsTransitionWrapper.vue
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
<template>
<div class="relative min-h-[18rem]">
<transition name="fade" appear mode="out-in">
<WidgetSkillsSkeletonPartial v-if="isLoading || !profile" key="skeleton" />
<WidgetSkillsPartial v-else key="skills" :skills="profile.skills" />
</transition>
<WidgetSkillsSkeletonPartial v-if="isLoading || !profile" key="skeleton" />
<WidgetSkillsPartial v-else key="skills" :skills="profile.skills" />
</div>
</template>

Expand Down
6 changes: 2 additions & 4 deletions src/components/WidgetSocialTransitionWrapper.vue
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
<template>
<div class="relative min-h-[200px]">
<transition name="fade" appear mode="out-in">
<WidgetSocialSkeletonPartial v-if="isLoading" key="skeleton" />
<WidgetSocialPartial v-else key="social" :social="social" />
</transition>
<WidgetSocialSkeletonPartial v-if="isLoading" key="skeleton" />
<WidgetSocialPartial v-else key="social" :social="social" />
</div>
</template>

Expand Down
14 changes: 6 additions & 8 deletions src/pages/AboutPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,12 @@
<div class="mt-5 space-y-5">
<h2 class="h2 font-aspekta text-slate-700 dark:text-slate-300">Let's Connect</h2>
<div class="relative min-h-[5rem]">
<transition name="fade" appear mode="out-in">
<p v-if="profile" key="connect">
I'm happy to connect by
<a v-lazy-link class="blog-link" title="send me an email" aria-label="send me an email" :href="`mailto:${profile.email}`"> email </a>
to discuss projects and ideas. While I'm not always available for freelance or long-term work, please don't hesitate to reach out anytime.
</p>
<AboutConnectSkeletonPartial v-else key="skeleton" />
</transition>
<p v-if="profile" key="connect">
I'm happy to connect by
<a v-lazy-link class="blog-link" title="send me an email" aria-label="send me an email" :href="`mailto:${profile.email}`"> email </a>
to discuss projects and ideas. While I'm not always available for freelance or long-term work, please don't hesitate to reach out anytime.
</p>
<AboutConnectSkeletonPartial v-else key="skeleton" />
</div>
</div>
</div>
Expand Down
Loading