calink/QUICKSTART.md
2026-02-20 15:50:32 +02:00

171 lines
3.1 KiB
Markdown

# Calink Quick Start Guide
Get Calink running in under 5 minutes!
## Option 1: Docker Compose (Recommended)
**Requirements:** Docker and Docker Compose
```bash
# Clone or navigate to the project
cd ics-generator
# Start everything
docker-compose up -d
# View logs
docker-compose logs -f
# Access the app
open http://localhost
```
That's it! Calink is now running on http://localhost
To stop:
```bash
docker-compose down
```
## Option 2: Local Development
**Requirements:** Python 3.11+, Node.js 18+
### Terminal 1 - Backend
```bash
cd backend
pip install -r requirements.txt
python main.py
```
Backend runs on: http://localhost:8000
### Terminal 2 - Frontend
```bash
cd frontend
npm install
npm run dev
```
Frontend runs on: http://localhost:5173
## Option 3: Kubernetes with Helm
**Requirements:** Kubernetes cluster, Helm 3+
```bash
# Install Calink
helm install calink ./helm/calink
# Check status
helm status calink
# Get access info
kubectl get ingress
```
## First Steps
1. **Create an Event**
- Open the web UI
- Fill in event title and start date/time
- Add reminders using quick buttons or custom values
- Click "Download .ics"
2. **Use History**
- Switch to "History" tab
- Click "Load" on any past event to reuse it
- Click "Delete" to remove old events
3. **Create Templates**
- Set up your favorite reminder configuration
- Switch to "Templates" tab
- Click "Save Current Reminders"
- Name your template
- Apply it anytime in future events
## API Examples
### Generate ICS File
```bash
curl -X POST "http://localhost:8000/api/ics" \
-H "Content-Type: application/json" \
-d '{
"title": "Team Meeting",
"start_dt": "2026-03-01T10:00:00Z",
"reminders": [
{"amount": 10, "unit": "minutes"}
]
}' \
--output meeting.ics
```
### Get History
```bash
curl http://localhost:8000/api/history
```
### Create Template
```bash
curl -X POST "http://localhost:8000/api/templates" \
-H "Content-Type: application/json" \
-d '{
"name": "Standard Reminders",
"reminders": [
{"amount": 10, "unit": "minutes"},
{"amount": 1, "unit": "hours"},
{"amount": 1, "unit": "days"}
]
}'
```
## Troubleshooting
**"Failed to fetch" in UI:**
- Ensure backend is running on port 8000
- Check browser console for errors
- Verify CORS is enabled (it should be by default)
**Docker: "Port already allocated":**
```bash
# Stop conflicting service
docker-compose down
# Or change ports in docker-compose.yml
```
**Backend: "No module named 'fastapi'":**
```bash
cd backend
pip install -r requirements.txt
```
**Frontend: Build errors:**
```bash
cd frontend
rm -rf node_modules package-lock.json
npm install
```
## Next Steps
- Read the full [README.md](README.md) for detailed documentation
- Explore API documentation at http://localhost:8000/docs
- Customize Helm values for production deployment
- Set up ingress for custom domain
## Support
- API Docs: http://localhost:8000/docs (when backend is running)
- Health Check: http://localhost:8000/health
- Full Documentation: [README.md](README.md)
---
**Happy event creating! 🎉**