mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 00:41:09 +02:00
- Move from apps-archived/ to apps/ - Delete NestJS backend, PocketBase, old scripts and docs - Create Hono/Bun redirect server (click tracking, analytics API) - Create @manacore/uload-database shared Drizzle schema package - Add local-first store (Dexie.js) for links, tags, folders - Rewrite Links and Tags pages to use IndexedDB - Simplify hooks, layouts, remove all server-side data loading - Add dev scripts: dev:uload:web, dev:uload:server, dev:uload:local Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
151 lines
3.6 KiB
Markdown
151 lines
3.6 KiB
Markdown
# uLoad - URL Shortener & Link Management
|
|
|
|
A modern URL shortener and link management platform built with SvelteKit and PocketBase.
|
|
|
|
## 🚀 Production
|
|
|
|
**Live:** https://ulo.ad
|
|
**Admin:** https://ulo.ad/_/
|
|
|
|
## 🛠 Tech Stack
|
|
|
|
- **Frontend:** SvelteKit 2.0 + Svelte 5
|
|
- **Backend:** PocketBase (embedded)
|
|
- **Styling:** Tailwind CSS 4.0
|
|
- **Deployment:** Docker + Coolify on Hetzner VPS
|
|
- **Database:** SQLite (via PocketBase)
|
|
|
|
## 📦 Features
|
|
|
|
- URL shortening with custom codes
|
|
- QR code generation
|
|
- Click analytics
|
|
- User profiles (e.g., ulo.ad/p/username)
|
|
- Link management dashboard
|
|
- Real-time statistics
|
|
|
|
## 🏃 Development
|
|
|
|
```bash
|
|
# Install dependencies
|
|
npm install --legacy-peer-deps
|
|
|
|
# Start development server
|
|
npm run dev
|
|
|
|
# Start with PocketBase backend
|
|
npm run dev:all
|
|
|
|
# Run tests
|
|
npm run test
|
|
|
|
# Type checking
|
|
npm run check
|
|
```
|
|
|
|
## 🐳 Docker Deployment
|
|
|
|
```bash
|
|
# Build and run locally
|
|
docker-compose up --build
|
|
|
|
# Access at:
|
|
# Frontend: http://localhost:3000
|
|
# PocketBase: http://localhost:8090
|
|
```
|
|
|
|
## 📝 Documentation
|
|
|
|
- [Deployment Guide](./DEPLOYMENT.md) - Complete Docker Compose deployment instructions
|
|
- [Lessons Learned](./DEPLOYMENT_LESSONS_LEARNED.md) - Troubleshooting and insights
|
|
- [Domain Setup](./DOMAIN_SETUP_ULO_AD.md) - ulo.ad configuration
|
|
- [Coolify Setup](./COOLIFY_SETUP.md) - Detailed Coolify configuration
|
|
|
|
## 🔧 Environment Variables
|
|
|
|
```bash
|
|
NODE_ENV=production
|
|
PORT=3000
|
|
ORIGIN=https://ulo.ad
|
|
PUBLIC_POCKETBASE_URL=https://ulo.ad/api
|
|
POCKETBASE_ADMIN_EMAIL=admin@example.com
|
|
POCKETBASE_ADMIN_PASSWORD=secure_password
|
|
```
|
|
|
|
See `.env.example` for all configuration options.
|
|
|
|
## 📂 Project Structure
|
|
|
|
```
|
|
uload/
|
|
├── src/ # SvelteKit application
|
|
│ ├── routes/ # Pages and API routes
|
|
│ ├── lib/ # Components and utilities
|
|
│ └── app.html # HTML template
|
|
├── backend/ # PocketBase configuration
|
|
│ ├── pb_schema.json # Database schema
|
|
│ └── init-pocketbase.sh # Setup script
|
|
├── build/ # Production build output
|
|
├── static/ # Static assets
|
|
├── Dockerfile # Multi-stage Docker build
|
|
├── docker-compose.yml # Local development
|
|
├── supervisord.conf # Process management
|
|
└── CLAUDE.md # AI assistant context
|
|
```
|
|
|
|
## 🚢 Deployment
|
|
|
|
The application is deployed on Hetzner VPS using Coolify with automatic deployments on push to main branch.
|
|
|
|
```bash
|
|
# Commit and push to deploy
|
|
git add .
|
|
git commit -m "Update"
|
|
git push origin main
|
|
# Coolify automatically deploys
|
|
```
|
|
|
|
### Manual Deployment Steps:
|
|
|
|
1. Set DNS A record to `91.99.221.179`
|
|
2. Add domain in Coolify
|
|
3. Update environment variables
|
|
4. Enable SSL certificate
|
|
5. Deploy application
|
|
|
|
## 📊 Monitoring
|
|
|
|
- **Health Check:** https://ulo.ad/health
|
|
- **Admin Panel:** https://ulo.ad/_/
|
|
- **Server:** Hetzner CX21 (2 vCPU, 4GB RAM)
|
|
- **Uptime:** 99.9% SLA
|
|
|
|
## 🔐 Security
|
|
|
|
- HTTPS enforced
|
|
- Environment-based configuration
|
|
- Secure admin authentication
|
|
- Rate limiting on API endpoints
|
|
- Regular security updates
|
|
|
|
## 🤝 Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
5. Open a Pull Request
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
Common issues and solutions are documented in [DEPLOYMENT_LESSONS_LEARNED.md](./DEPLOYMENT_LESSONS_LEARNED.md)
|
|
|
|
For support, check:
|
|
|
|
- Application logs in Coolify
|
|
- Health endpoint status
|
|
- PocketBase admin panel
|
|
|
|
## 📄 License
|
|
|
|
Private - Memoro AI © 2024
|