Remove obsolete scripts and configuration files for self-hosting and database migrations
- Deleted `pnpm-workspace.yaml` as it is no longer needed. - Removed `apply-migrations.sh` script that handled database migrations. - Eliminated `generate-full-stack-env.mjs` script for environment variable generation. - Deleted `selfhost-backup.sh` script for creating backups of the self-hosted environment. - Removed `selfhost-doctor.sh` script for health checks of the self-hosted services. - Deleted `selfhost-restore.sh` script for restoring backups in the self-hosted environment.
This commit is contained in:
@@ -1,130 +1,83 @@
|
||||
<img src="public/logo/lightLogoLong.png" height="200" alt="Neta Icon" />
|
||||
|
||||
# Neta - Freelancer Operating System
|
||||
# Neta
|
||||
|
||||
[](https://nextjs.org/)
|
||||
[](https://react.dev/)
|
||||
[](https://tailwindcss.com/)
|
||||
[](https://supabase.com/)
|
||||
[](https://sdk.vercel.ai/)
|
||||
[](https://github.com/poyrazavsever)
|
||||
Neta is a freelancer operating system built with Next.js and Supabase. It manages clients, projects, tasks, finance, daily logs, analytics, AI chat, and a limited client portal.
|
||||
|
||||
## Overview
|
||||
This repository now ships only the web application. It does not bundle Supabase, PostgreSQL, Docker Compose, installers, migration runners, or backup scripts. Bring your own Supabase project and provide the required environment variables in the deploy platform.
|
||||
|
||||
Neta is a comprehensive, self-hosted workspace designed specifically for freelancers. It serves as a centralized operating system to manage daily operations, clients, projects, finances, and personal performance tracking.
|
||||
## Stack
|
||||
|
||||
Built with a focus on simplicity, security, and edge-to-edge aesthetic design, Neta allows a single user (the freelancer) to operate their entire business from one dashboard without relying on multiple third-party SaaS subscriptions.
|
||||
- Next.js App Router
|
||||
- React
|
||||
- Tailwind CSS
|
||||
- Poyraz UI
|
||||
- Supabase Auth, Postgres, Storage, and RLS
|
||||
- Vercel AI SDK
|
||||
|
||||
## Features and Modules
|
||||
## Requirements
|
||||
|
||||
### 1. Unified Dashboard
|
||||
A command center providing a tactical overview of your current performance. It tracks active revenue, task completion, and upcoming deadlines, ensuring you always know what needs immediate attention.
|
||||
1. A Supabase project that already contains Neta's database schema, RLS policies, RPC functions, and storage buckets.
|
||||
2. Supabase project credentials:
|
||||
- Project URL
|
||||
- Anon/public key
|
||||
- Service role key
|
||||
3. Node.js 20 or newer.
|
||||
|
||||
### 2. Client Management
|
||||
A structured CRM to manage your client base. You can track client statuses, store communication notes, and link clients directly to ongoing projects and tasks.
|
||||
See `docs/04-supabase-kurulumu.md` for the expected Supabase-side resources.
|
||||
|
||||
### 3. Project and Task Management
|
||||
A robust pipeline for tracking project milestones and individual tasks. Features include priority assignments, status tracking, deadline management, and automated project progress calculations.
|
||||
## Environment Variables
|
||||
|
||||
### 4. Financial Tracking
|
||||
An integrated ledger to monitor income, expenses, and cash flow. It provides graphical analysis and clear tabular data of your recent transactions, allowing you to stay on top of your financial health.
|
||||
Copy `.env.example` to `.env.local` for local development, or add the same values in Vercel, Coolify, Dokploy, or your hosting provider.
|
||||
|
||||
### 5. Journal and Performance Analytics
|
||||
A dedicated journaling module to record daily mood, energy levels, and work satisfaction. This data is aggregated to provide trend analysis, helping you understand how your personal well-being correlates with your professional output.
|
||||
|
||||
### 6. Built-in AI Assistant
|
||||
A localized AI module integrated directly into your workspace. It connects to your choice of provider (Google Gemini, OpenAI, Groq, or local Ollama instances) and can query your existing database to provide instant summaries, insights, and answers regarding your tasks and finances.
|
||||
|
||||
### 7. Client Portal
|
||||
A restricted, read-only interface that you can share with your clients. They can log in to view the progress of their specific projects and public tasks, providing transparency without compromising your internal data security.
|
||||
|
||||
## Technical Architecture
|
||||
|
||||
Neta is engineered using modern, high-performance web technologies:
|
||||
|
||||
- **Frontend:** Next.js (App Router) combined with React Server Components.
|
||||
- **Styling:** Tailwind CSS with a custom, bespoke design system via Poyraz UI.
|
||||
- **Backend and Database:** Supabase (PostgreSQL) handling authentication, Row Level Security (RLS), and database migrations.
|
||||
- **AI Integration:** Vercel AI SDK for streaming responses and tool-calling capabilities.
|
||||
- **Deployment:** Fully containerized with Docker, optimized for standalone builds.
|
||||
|
||||
## Installation and Deployment
|
||||
|
||||
Neta is designed for self-hosting. It supports two Docker deployment modes:
|
||||
|
||||
- **Full-stack:** Neta + bundled Postgres/Auth/PostgREST/Storage.
|
||||
- **App-only:** Neta connected to an existing Supabase-compatible backend.
|
||||
|
||||
### Prerequisites
|
||||
- Docker and Docker Compose
|
||||
- For app-only mode: Supabase API URL, anon key, service role key, and a direct Postgres `DATABASE_URL` for migrations
|
||||
|
||||
### 1-Click Installation (Recommended)
|
||||
|
||||
You can install Neta using the interactive setup script:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/poyrazavsever/neta/main/install.sh | bash
|
||||
```env
|
||||
NEXT_PUBLIC_SITE_URL=https://your-domain.com
|
||||
NEXT_PUBLIC_SUPABASE_URL=https://your-project-ref.supabase.co
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
|
||||
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
|
||||
```
|
||||
|
||||
The installer asks for the deployment mode, writes a `.env` file, validates Docker Compose configuration, and starts the application. In full-stack mode it generates Supabase JWT secrets and applies Neta migrations automatically through the `neta-migrations` service.
|
||||
`SUPABASE_SERVICE_ROLE_KEY` is server-only. Do not expose it with a `NEXT_PUBLIC_` prefix.
|
||||
|
||||
### Manual Installation
|
||||
|
||||
If you prefer to set up Neta manually:
|
||||
|
||||
1. Clone the repository: `git clone https://github.com/poyrazavsever/neta.git`
|
||||
2. Navigate to the directory.
|
||||
3. For full-stack mode, generate a `.env` file and run:
|
||||
## Local Development
|
||||
|
||||
```bash
|
||||
node scripts/generate-full-stack-env.mjs > .env
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Open `http://localhost:3000`.
|
||||
|
||||
## Production Build
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.full.yml up -d --build
|
||||
npm run build
|
||||
npm run start
|
||||
```
|
||||
|
||||
4. For app-only mode, copy `.env.example` to `.env`, fill every required value, and apply database migrations:
|
||||
## Deploy
|
||||
|
||||
```bash
|
||||
DATABASE_URL='postgresql://postgres:password@host:5432/postgres' sh ./scripts/apply-migrations.sh
|
||||
```
|
||||
### Vercel
|
||||
|
||||
5. Start the app-only Docker container:
|
||||
1. Import the GitHub repository.
|
||||
2. Add the environment variables from `.env.example`.
|
||||
3. Deploy with the default Next.js settings.
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
```
|
||||
### Coolify or Dokploy
|
||||
|
||||
Docker Compose intentionally fails fast when required Supabase environment values are missing.
|
||||
1. Create a standard Next.js application from this GitHub repository.
|
||||
2. Use the platform's normal install/build/start commands:
|
||||
- Install: `npm install`
|
||||
- Build: `npm run build`
|
||||
- Start: `npm run start`
|
||||
3. Add the environment variables from `.env.example`.
|
||||
|
||||
Coolify users should use `docker-compose.full.yml` for the no-external-service setup. Dokploy users should use `docker-compose.dokploy.yml`, which avoids fixed container names and host port bindings. Use `docker-compose.yml` only when connecting to an existing Supabase backend. See `docs/deployment/self-hosting.md` for the deployment checklist.
|
||||
No Dockerfile or Compose file is required.
|
||||
|
||||
### Operations
|
||||
## First Admin
|
||||
|
||||
For full-stack installs, run health diagnostics and backups from the repository root:
|
||||
|
||||
```bash
|
||||
sh ./scripts/selfhost-doctor.sh
|
||||
sh ./scripts/selfhost-backup.sh
|
||||
```
|
||||
|
||||
To also verify real Auth signup and password login, run:
|
||||
|
||||
```bash
|
||||
NETA_DOCTOR_AUTH_SMOKE=1 sh ./scripts/selfhost-doctor.sh
|
||||
```
|
||||
|
||||
Restore requires an existing backup directory and explicit confirmation:
|
||||
|
||||
```bash
|
||||
sh ./scripts/selfhost-restore.sh ./backups/20260101T120000Z
|
||||
```
|
||||
|
||||
### First Administrator Account
|
||||
To ensure data security, Neta is locked to a single administrator. Upon launching the application for the first time, navigate to the `/register` route to create the initial admin account. Once this account is created, public registration is permanently disabled.
|
||||
After deploying against a prepared Supabase project, open `/register` once to create the first freelancer/admin account. Registration is locked after the first admin profile exists.
|
||||
|
||||
## License
|
||||
|
||||
This project is proprietary and intended for personal self-hosting.
|
||||
This project is proprietary and intended for personal self-hosting with an external Supabase project.
|
||||
|
||||
Reference in New Issue
Block a user