196 lines
4.6 KiB
Markdown
Executable file
196 lines
4.6 KiB
Markdown
Executable file
# GoHorseJobs Backend
|
||
|
||
This is the backend for the GoHorseJobs application, built with Go and PostgreSQL.
|
||
|
||
## Architecture
|
||
|
||
### 1. **Core Module (Clean Architecture)**
|
||
The project now includes a strictly decoupled `internal/core` module that follows Clean Architecture and DDD principles.
|
||
- **Pure Domain**: `internal/core/domain/entity` (No external deps).
|
||
- **Ports**: `internal/core/ports` (Interfaces for Repositories/Services).
|
||
- **UseCases**: `internal/core/usecases` (Business Logic).
|
||
|
||
### 2. **Multi-Tenancy**
|
||
- **Strict Isolation**: All core tables (`core_companies`, `core_users`) use UUIDs and strict Tenant FKs.
|
||
- **Middleware**: `TenantGuard` automatically extracts Tenant context from JWTs.
|
||
|
||
### 3. **Swagger API Docs**
|
||
- **URL**: [http://localhost:8080/swagger/index.html](http://localhost:8080/swagger/index.html)
|
||
- **Generate**: `swag init -g cmd/api/main.go --parseDependency --parseInternal`
|
||
|
||
### 4. **Super Admin Access**
|
||
A seed migration is provided to create the initial system access.
|
||
- **Migration**: `migrations/010_seed_super_admin.sql`
|
||
- **User**: `admin@gohorse.com`
|
||
- **Password**: `password123`
|
||
|
||
## Prerequisites
|
||
|
||
- Docker
|
||
- Docker Compose
|
||
- Go 1.22+
|
||
|
||
## Getting Started
|
||
|
||
1. **Start the services:**
|
||
|
||
```bash
|
||
docker-compose up --build
|
||
```
|
||
|
||
This will start the PostgreSQL database and the Go API server.
|
||
|
||
Alternatively, use the running script in the root:
|
||
```bash
|
||
./run_dev.sh
|
||
```
|
||
|
||
2. **Access the API:**
|
||
|
||
The API will be available at `http://localhost:8080`.
|
||
|
||
- **Health Check:** `GET /health`
|
||
- **List Jobs:** `GET /jobs`
|
||
- **Create Job:** `POST /jobs`
|
||
|
||
## API Endpoints
|
||
|
||
### `GET /health`
|
||
|
||
Returns `200 OK` if the server is running.
|
||
|
||
### `GET /jobs`
|
||
|
||
Returns a list of all jobs.
|
||
|
||
**Response:**
|
||
|
||
```json
|
||
[
|
||
{
|
||
"id": 1,
|
||
"title": "Software Engineer",
|
||
"description": "Develop Go applications.",
|
||
"company_name": "Tech Corp",
|
||
"location": "Remote",
|
||
"salary_range": "$100k - $120k",
|
||
"created_at": "2023-10-27T10:00:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
### `POST /jobs`
|
||
|
||
Creates a new job.
|
||
|
||
**Request Body:**
|
||
|
||
```json
|
||
{
|
||
"title": "Software Engineer",
|
||
"description": "Develop Go applications.",
|
||
"company_name": "Tech Corp",
|
||
"location": "Remote",
|
||
"salary_range": "$100k - $120k"
|
||
}
|
||
```
|
||
|
||
**Response:**
|
||
|
||
Returns the created job with its ID and creation timestamp.
|
||
|
||
---
|
||
|
||
# 📚 Feature Documentation (Archives)
|
||
|
||
> [!NOTE]
|
||
> The following documentation describes features implemented in the application, including Frontend components and Local Database logic. They have been consolidated here for reference.
|
||
|
||
## 🗄️ Local Database - Profile System (Legacy/Frontend)
|
||
|
||
Full local database system using localStorage to manage profile photos and user data.
|
||
|
||
### 🚀 Usage
|
||
|
||
#### 1. Page with Database
|
||
Access: `http://localhost:3000/profile-db`
|
||
|
||
#### 2. Features Implemented
|
||
|
||
**📸 Profile Picture Upload**
|
||
- ✅ Click to select image
|
||
- ✅ Automatic validation (JPG, PNG, GIF, WebP)
|
||
- ✅ 2MB limit per file
|
||
- ✅ Instant preview
|
||
- ✅ Auto-save to localStorage
|
||
- ✅ Loading indicator
|
||
- ✅ Remove photo button
|
||
|
||
**🗃️ Local Database**
|
||
- ✅ Auto-save to localStorage
|
||
- ✅ Persistence between sessions
|
||
- ✅ Export data (JSON backup)
|
||
- ✅ Clear all data
|
||
- ✅ User structure
|
||
- ✅ Creation/update timestamps
|
||
|
||
**🔧 useProfile Hook**
|
||
- ✅ Reactive state management
|
||
- ✅ Loading states
|
||
- ✅ Full CRUD
|
||
- ✅ Auto synchronization
|
||
|
||
## 🏢 Company Dashboard (Frontend Features)
|
||
|
||
### ✅ Complete Features
|
||
|
||
#### 1️⃣ Job Management
|
||
**Page:** `/dashboard/empresa/vagas`
|
||
- ✅ Full listing of published jobs
|
||
- ✅ Statistics per job
|
||
- ✅ Search and filters
|
||
- ✅ Quick actions: View, Edit, Pause, Delete
|
||
|
||
#### 2️⃣ Application Management
|
||
**Page:** `/dashboard/empresa/candidaturas`
|
||
- ✅ View all received applications
|
||
- ✅ Statistics cards by status
|
||
- ✅ Tabs system
|
||
- ✅ Search by candidate name
|
||
- ✅ Quick actions: Approve, Reject, Email
|
||
|
||
#### 3️⃣ Messaging System
|
||
**Page:** `/dashboard/empresa/mensagens`
|
||
- ✅ WhatsApp/Slack style chat interface
|
||
- ✅ Conversation list with unread counters
|
||
- ✅ Real-time message attachment
|
||
- ✅ Responsive design
|
||
|
||
#### 4️⃣ Analytics & Reports
|
||
**Page:** `/dashboard/empresa/relatorios`
|
||
- ✅ Key metrics cards
|
||
- ✅ Period selector
|
||
- ✅ Conversion funnel
|
||
- ✅ Hiring time by role
|
||
|
||
#### 5️⃣ Company Profile
|
||
**Page:** `/dashboard/empresa/perfil`
|
||
- ✅ Real logo upload
|
||
- ✅ Basic info management
|
||
- ✅ Social media links
|
||
- ✅ Culture description
|
||
|
||
### 🎨 Design System
|
||
|
||
**Stack:**
|
||
- shadcn/ui
|
||
- Tailwind CSS
|
||
- Lucide Icons
|
||
- Framer Motion
|
||
|
||
**Colors:**
|
||
- Primary: Blue
|
||
- Success: Green
|
||
- Warning: Yellow
|
||
- Danger: Red
|
||
- Muted: Gray
|