Compare commits

..

No commits in common. "ba4ee3c6d6a22cbc0f928ba52b7734d1fb8f8b27" and "540f6599d3914dda52e0daa91016f300d82d7443" have entirely different histories.

9 changed files with 5 additions and 4067 deletions

View File

@ -1,8 +0,0 @@
Dockerfile
.dockerignore
node_modules
.next
out
.git
.gitignore
README.md

View File

@ -1,44 +0,0 @@
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci --legacy-peer-deps
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
RUN npm run build
# Production image with nginx
FROM nginx:alpine AS runner
# Copy static export to nginx
COPY --from=builder /app/out /usr/share/nginx/html
# Custom nginx config for SPA routing
RUN echo 'server { \
listen 80; \
server_name _; \
root /usr/share/nginx/html; \
index index.html; \
\
location / { \
try_files $uri $uri.html $uri/ /index.html; \
} \
\
# Cache static assets \
location /_next/static/ { \
expires 1y; \
add_header Cache-Control "public, immutable"; \
} \
\
# Security headers \
add_header X-Frame-Options "SAMEORIGIN" always; \
add_header X-Content-Type-Options "nosniff" always; \
}' > /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

View File

@ -1,15 +0,0 @@
project_name: "Crypto Commons Association"
default_status: "To Do"
statuses: ["To Do", "In Progress", "Done"]
labels: []
milestones: []
date_format: yyyy-mm-dd
max_column_width: 20
default_editor: "vim"
auto_open_browser: true
default_port: 6420
remote_operations: true
auto_commit: false
bypass_git_hooks: false
check_active_branches: true
active_branch_days: 30

View File

@ -1,33 +0,0 @@
---
id: task-1
title: Deploy crypto-commons.org to self-hosted infrastructure
status: Done
assignee: []
created_date: '2025-12-06 15:25'
updated_date: '2025-12-06 15:26'
labels: []
dependencies: []
priority: high
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Migrate CCA website from external hosting to Netcup server with Cloudflare tunnel
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [x] #1 Update Next.js to latest (16.0.7) for security fix
- [x] #2 Create Dockerfile for static nginx deployment
- [x] #3 Create docker-compose.yml with Traefik labels
- [x] #4 Deploy to Netcup server
- [x] #5 Configure Cloudflare tunnel
- [x] #6 Update DNS records to point to tunnel
<!-- AC:END -->
## Implementation Notes
<!-- SECTION:NOTES:BEGIN -->
Deployed 2025-12-06. Site is live at https://crypto-commons.org
<!-- SECTION:NOTES:END -->

View File

@ -1,24 +0,0 @@
---
id: task-2
title: Gather community design input for CCA website
status: To Do
assignee: []
created_date: '2025-12-06 15:27'
labels: []
dependencies: []
priority: medium
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Collect feedback and design suggestions from the Crypto Commons community to improve the website
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Share website with CCA community for feedback
- [ ] #2 Collect design suggestions and feature requests
- [ ] #3 Prioritize improvements based on community input
- [ ] #4 Implement agreed-upon changes
<!-- AC:END -->

View File

@ -1,16 +0,0 @@
services:
cca-website:
build: .
container_name: cca-website
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.cca.rule=Host(`crypto-commons.org`) || Host(`www.crypto-commons.org`)"
- "traefik.http.routers.cca.entrypoints=web,websecure"
- "traefik.http.services.cca.loadbalancer.server.port=80"
networks:
- traefik-public
networks:
traefik-public:
external: true

View File

@ -1,6 +1,9 @@
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'export',
eslint: {
ignoreDuringBuilds: true,
},
typescript: {
ignoreBuildErrors: true,
},

3925
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -46,7 +46,7 @@
"embla-carousel-react": "8.5.1",
"input-otp": "1.4.1",
"lucide-react": "^0.454.0",
"next": "^16.0.7",
"next": "16.0.0",
"next-themes": "latest",
"react": "19.2.0",
"react-day-picker": "9.8.0",
@ -70,4 +70,4 @@
"tw-animate-css": "1.3.3",
"typescript": "^5"
}
}
}