Open source log management platform
Ingest, search, and visualize your application logs in real-time.
Logify is a self-hosted, open source alternative to services like Datadog, Logtail, and Sentry for log management. Ship your application logs to a single endpoint, then search, filter, and visualize them through a modern dashboard.
Why Logify?
- Simple -- One API endpoint, one API key, done
- Fast -- Neon PostgreSQL for blazing reads
- Self-hosted -- Your data stays on your servers
- Open source -- MIT licensed, no vendor lock-in
- Modern stack -- Built with Nuxt 4, Vue 3, and Tailwind CSS v4
- Real-time Log Streaming -- Watch logs flow in with zero delay
- Powerful Search -- Full-text search with filters for level, service, time range, and tags
- API-First Design -- Simple REST API with comprehensive documentation
- Rate Limiting -- Built-in protection with configurable limits per API key
- Multiple Environments -- Separate logs by production, staging, and development
- API Key Management -- Generate, rotate, and revoke keys from the dashboard
- Authentication -- Secure user accounts with session-based auth
- Dark Mode -- Beautiful dark theme designed for developers
- Node.js >= 20
- npm, pnpm, or yarn
# Clone the repository
git clone https://github.com/whoisarjen/logify.git
cd logify
# Install dependencies
npm install
# Create a Neon project at https://neon.tech and get your connection string
# Copy environment variables and set your DATABASE_URL
cp .env.example .env
# Push the database schema to Neon
npx prisma db push
# Start the development server
npm run devThe app will be running at http://localhost:3000.
After creating an account and generating an API key from the dashboard:
curl -X POST http://localhost:3000/api/v1/logs \
-H "X-API-Key: lgfy_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"level": "info",
"message": "User authenticated successfully",
"service": "auth-service",
"environment": "production",
"meta": {
"userId": "usr_123",
"method": "oauth"
}
}'POST /api/v1/logs
Headers:
| Header | Required | Description |
|---|---|---|
X-API-Key |
Yes | Your API key (lgfy_...) |
Content-Type |
Yes | application/json |
Body:
| Field | Type | Required | Description |
|---|---|---|---|
level |
string | Yes | debug, info, warn, error, or fatal |
message |
string | Yes | The log message |
service |
string | No | Service or application name |
environment |
string | No | production, staging, or development |
timestamp |
string | No | ISO 8601 timestamp (defaults to now) |
meta |
object | No | Custom metadata key-value pairs |
traceId |
string | No | Distributed trace ID |
spanId |
string | No | Span ID for tracing |
userId |
string | No | Associated user identifier |
requestId |
string | No | Request correlation ID |
host |
string | No | Host or server name |
tags |
string[] | No | Searchable tags |
Response:
{
"success": true,
"logId": "abc123..."
}| Tier | Requests/day | Monthly Logs |
|---|---|---|
| Free | 500 | 10,000 |
| Pro | 50,000 | 1,000,000 |
| Enterprise | Custom | Unlimited |
| Layer | Technology |
|---|---|
| Framework | Nuxt 4 |
| Frontend | Vue 3 + Tailwind CSS v4 |
| Backend | Nitro (H3) |
| Database | Neon PostgreSQL + Prisma ORM |
| Auth | Session-based with bcrypt + secure cookies |
| Fonts | Inter + JetBrains Mono |
logify/
├── app/
│ ├── assets/css/ # Global styles (Tailwind)
│ ├── components/
│ │ ├── dashboard/ # Dashboard UI components
│ │ └── landing/ # Landing page components
│ ├── composables/ # Vue composables (useAuth)
│ ├── layouts/ # App layouts (default, dashboard)
│ └── pages/ # File-based routing
│ ├── dashboard/ # Dashboard pages
│ ├── docs.vue # API documentation
│ ├── pricing.vue # Pricing page
│ ├── login.vue # Authentication
│ └── register.vue # Registration
├── prisma/
│ └── schema.prisma # Prisma schema definition
├── server/
│ ├── api/
│ │ ├── auth/ # Auth endpoints (login, register, me)
│ │ ├── keys/ # API key management
│ │ ├── logs/ # Log querying & stats
│ │ └── v1/ # Public log ingestion API
│ ├── plugins/ # Nitro plugins (DB init)
│ └── utils/ # DB, auth, rate limiting
├── public/ # Static assets
├── .github/ # Issue & PR templates
└── nuxt.config.ts # Nuxt configuration
# Neon PostgreSQL connection string
DATABASE_URL=postgresql://user:password@ep-xxx.region.aws.neon.tech/neondb?sslmode=require
# Secret for session token signing
SESSION_SECRET=your-secret-hereWe welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- GitHub Issues -- Bug reports and feature requests
- GitHub Discussions -- Questions and ideas
If you discover a security vulnerability, please see our Security Policy for responsible disclosure guidelines.
Logify is open source software licensed under the MIT License.