https://github.com/mirian97/staff-management-system
Fullstack app built with Laravel and Next.js
https://github.com/mirian97/staff-management-system
composer eloquent-orm laravel mysql next15 nextauth php8 tailwindcss
Last synced: 3 months ago
JSON representation
Fullstack app built with Laravel and Next.js
- Host: GitHub
- URL: https://github.com/mirian97/staff-management-system
- Owner: Mirian97
- Created: 2024-12-16T00:48:48.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-02-16T01:25:48.000Z (over 1 year ago)
- Last Synced: 2025-02-23T18:15:36.959Z (over 1 year ago)
- Topics: composer, eloquent-orm, laravel, mysql, next15, nextauth, php8, tailwindcss
- Language: PHP
- Homepage:
- Size: 540 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Staff Management System
## Sobre o Projeto
O **Staff Management System** é uma aplicação fullstack desenvolvida para gerenciar informações de funcionários em uma organização. Este projeto utiliza um backend em Laravel para fornecer uma API robusta e segura, enquanto o frontend foi construído em Next.js para oferecer uma experiência de usuário rápida e responsiva.
### Funcionalidades
- **Gestão de Funcionários**: Cadastro, edição, listagem e remoção de funcionários.
- **Autenticação JWT**: Controle de acesso seguro para os usuários.
- **Relações Entre Entidades**: Gestão de departamentos com chave estrangeira atreladas a muitos funcionários.
- **Frontend Moderno**: Interface de usuário desenvolvida em Next.js com estilização responsiva.
## Tecnologias Utilizadas
### Backend
- **Framework**: Laravel 11
- **Banco de Dados**: MySQL
- **Autenticação**: JWT (JSON Web Token)
- **Seeds & Factories**: Geração automática de dados para testes
### Frontend
- **Framework**: Next.js
- **Linguagem**: TypeScript
- **Estilização**: Tailwind CSS
### Outras Ferramentas
- Composer (Gestão de dependências PHP)
- npm (Gestão de dependências JavaScript)
## Estrutura de Dados
### Migration: Departments
```php
Schema::create('departments', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
```
### Migration: Employees
```php
Schema::create('employees', function (Blueprint $table) {
$table->id();
$table->string('first_name');
$table->string('last_name');
$table->string('email')->unique();
$table->string('phone');
$table->foreignId('department_id')
->constrained('departments')
->onUpdate('cascade')
->onDelete('cascade');
$table->string('password');
$table->timestamps();
});
```
### Migration: Tasks
```php
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('description');
$table->date('due_date');
$table->foreignId('assignee_id')
->constrained('employees')
->onUpdate('cascade');
->onDelete('cascade');
$table->timestamps();
});
```
## Instalação
### Backend
1. Clone o repositório:
```bash
git clone https://github.com/Mirian97/staff-management-system.git
cd staff-management-system/back
```
2. Instale as dependências do Laravel:
```bash
composer install
```
3. Configure o arquivo `.env` com os dados do banco de dados e gere uma nova Api key.
```bash
cp .env.example .env
php artisan key:generate
```
4. Execute as migrações e seeds:
```bash
php artisan migrate --seed
```
5. Inicie o servidor:
```bash
php artisan serve
```
### Frontend
1. Navegue até a pasta do frontend:
```bash
cd ../front
```
2. Instale as dependências do Next.js:
```bash
npm install
```
3. Configure o arquivo `.env.local` com a URL da API do Laravel.
4. Inicie o servidor de desenvolvimento:
```bash
npm run dev
```
## Rotas da API
### Autenticação
- **POST** `/api/register` – Registra um novo usuário.
- **POST** `/api/login` – Realiza o login e retorna o token JWT.
- **POST** `/api/logout` – Invalida o token JWT.
- **GET** `/api/user` – Retorna os dados do usuário autenticado.
### Departments
- **GET** `/api/departments` – Lista todos os departamentos.
- **POST** `/api/departments` – Cria um novo departamento.
- **PUT** `/api/departments/{id}` – Atualiza os dados de um departamento.
- **DELETE** `/api/departments/{id}` – Exclui um departamento.
### Employees
- **GET** `/api/employees` – Lista todos os funcionários.
- **POST** `/api/employees` – Cria um novo funcionário.
- **PUT** `/api/employees/{id}` – Atualiza os dados de um funcionário.
- **DELETE** `/api/employees/{id}` – Exclui um funcionário.
### Tasks
- **GET** `/api/tasks` – Lista todas as tarefas.
- **POST** `/api/tasks` – Cria uma nova tarefa.
- **PUT** `/api/tasks/{id}` – Atualiza os dados de uma tarefa.
- **DELETE** `/api/tasks/{id}` – Exclui uma tarefa.
## Contribuição
Contribuições são bem-vindas! Por favor, envie um pull request ou abra uma issue para discutir melhorias no projeto.
## Licença
Este projeto está licenciado sob a [MIT License](./docs/LICENSE.md).