Initial commit by AI Generator

This commit is contained in:
AI Generator
2026-02-20 16:21:55 +00:00
commit 038f9a9ab1
7 changed files with 27 additions and 0 deletions

12
Dockerfile Normal file
View File

@@ -0,0 +1,12 @@
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

1
index.html Normal file
View File

@@ -0,0 +1 @@
<!DOCTYPE html><html><head><meta charset="UTF-8"/><title>Todo</title></head><body><div id="root"></div><script type="module" src="/src/main.jsx"></script></body></html>

10
nginx.conf Normal file
View File

@@ -0,0 +1,10 @@
server {
listen 80;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
gzip on;
gzip_types text/plain text/css application/json application/javascript;
}

1
package.json Normal file
View File

@@ -0,0 +1 @@
{"name":"todo-app","type":"module","dependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"devDependencies":{"@vitejs/plugin-react":"^4.2.1","vite":"^5.0.0"},"scripts":{"dev":"vite","build":"vite build"}}

1
src/App.jsx Normal file
View File

@@ -0,0 +1 @@
import React,{useState} from "react"; export default function App(){const[t,s]=useState([]);const[v,sv]=useState("");return(<div style={{padding:20}}><h1>Todo App</h1><input value={v} onChange={e=>sv(e.target.value)} placeholder="Nowe zadanie"/><button onClick={()=>{if(v){s([...t,{text:v,done:false}]);sv("")}}}>Dodaj</button><ul>{t.map((i,k)=><li key={k} style={{textDecoration:i.done?"line-through":""}} onClick={()=>s(t.map((x,j)=>j===k?{...x,done:!x.done}:x))}>{i.text}</li>)}</ul></div>)}

1
src/main.jsx Normal file
View File

@@ -0,0 +1 @@
import React from "react"; import ReactDOM from "react-dom/client"; import App from "./App.jsx"; ReactDOM.createRoot(document.getElementById("root")).render(<React.StrictMode><App/></React.StrictMode>);

1
vite.config.js Normal file
View File

@@ -0,0 +1 @@
import {defineConfig} from "vite"; import react from "@vitejs/plugin-react"; export default defineConfig({plugins:[react()]})