Skip to content
Open
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
12 changes: 5 additions & 7 deletions packages/cli/templates/backend-and-client/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Todo App
# Base44 App

A simple todo list app built with React and Base44 backend.
A React + TypeScript app with Base44 backend.

## Structure

Expand All @@ -11,10 +11,8 @@ base44/ # Backend configuration
└── task.jsonc # Task entity

src/ # Frontend code
├── App.jsx # Main todo app
├── api/ # Base44 client
├── components/ui/ # UI components
└── lib/ # Utilities
├── App.tsx # Main app component
└── api/ # Base44 client
```

## Development
Expand All @@ -29,7 +27,7 @@ npm run dev
| Command | Description |
|---------|-------------|
| `npm run dev` | Start dev server |
| `npm run build` | Build for production |
| `npm run build` | Type-check + build for production |
| `npm run preview` | Preview production build |

## Base44 CLI
Expand Down

This file was deleted.

16 changes: 0 additions & 16 deletions packages/cli/templates/backend-and-client/components.json

This file was deleted.

4 changes: 2 additions & 2 deletions packages/cli/templates/backend-and-client/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="https://base44.com/logo_v2.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Todo App</title>
<title>Base44 App</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
13 changes: 0 additions & 13 deletions packages/cli/templates/backend-and-client/jsconfig.json

This file was deleted.

13 changes: 6 additions & 7 deletions packages/cli/templates/backend-and-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,19 @@
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"build": "tsc -b && vite build",
"preview": "vite preview"
},
"dependencies": {
"@base44/sdk": "^0.8.3",
"lucide-react": "^0.475.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@types/react": "^18.3.1",
"@types/react-dom": "^18.3.1",
"@vitejs/plugin-react": "^4.3.4",
"autoprefixer": "^10.4.20",
"postcss": "^8.5.3",
"tailwindcss": "^3.4.17",
"typescript": "^5.7.2",
"vite": "^6.1.0"
}
}
6 changes: 0 additions & 6 deletions packages/cli/templates/backend-and-client/postcss.config.js

This file was deleted.

148 changes: 0 additions & 148 deletions packages/cli/templates/backend-and-client/src/App.jsx

This file was deleted.

74 changes: 74 additions & 0 deletions packages/cli/templates/backend-and-client/src/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import { useState, useEffect } from 'react'
import { base44 } from '@/api/base44Client'

interface Task {
id: string
title: string
completed: boolean
}

const Task = base44.entities.Task

export default function App() {
const [tasks, setTasks] = useState<Task[]>([])
const [input, setInput] = useState('')
const [loading, setLoading] = useState(true)

useEffect(() => {
Task.list().then((data: Task[]) => {
setTasks(data)
setLoading(false)
})
}, [])

const addTask = async (e: React.FormEvent) => {
e.preventDefault()
if (!input.trim()) return
await Task.create({ title: input.trim(), completed: false })
setInput('')
setTasks(await Task.list())
}

const toggleTask = async (task: Task) => {
await Task.update(task.id, { completed: !task.completed })
setTasks(await Task.list())
}

const deleteTask = async (id: string) => {
await Task.delete(id)
setTasks(await Task.list())
}

return (
<main>
<h1>Tasks</h1>
<form onSubmit={addTask}>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="New task…"
/>
<button type="submit">Add</button>
</form>
{loading ? (
<p>Loading…</p>
) : (
<ul>
{tasks.map((task) => (
<li key={task.id}>
<input
type="checkbox"
checked={task.completed}
onChange={() => toggleTask(task)}
/>
<span style={{ textDecoration: task.completed ? 'line-through' : 'none' }}>
{task.title}
</span>
<button onClick={() => deleteTask(task.id)}>✕</button>
</li>
))}
</ul>
)}
</main>
)
}

This file was deleted.

This file was deleted.

Loading
Loading