REST API completa para um aplicativo de currΓculos, com 12 entidades e todos os relacionamentos.
users (1) ββββββββββββ (N) resumes
resumes (1) ββββββββββββ (1) personal_info
resumes (1) ββββββββββββ (N) work_experiences
resumes (1) ββββββββββββ (N) education
resumes (1) ββββββββββββ (N) skills
resumes (1) ββββββββββββ (N) languages
resumes (1) ββββββββββββ (N) projects
resumes (1) ββββββββββββ (N) certifications
resumes (1) ββββββββββββ (N) awards
resumes (1) ββββββββββββ (N) volunteer_experiences
resumes (1) ββββββββββββ (N) publications
resumes (1) ββββββββββββ (N) references_list
npm installcp .env.example .env
# Editar .env com suas credenciais do PostgreSQL-- No psql:
CREATE DATABASE resume_db;npm run migratenpm run dev # desenvolvimento (nodemon)
npm start # produΓ§Γ£o| MΓ©todo | Endpoint | DescriΓ§Γ£o |
|---|---|---|
| GET | /users |
Listar todos os usuΓ‘rios |
| GET | /users/:id |
Buscar usuΓ‘rio por ID |
| GET | /users/:id/resumes |
Listar currΓculos do usuΓ‘rio |
| POST | /users |
Criar usuΓ‘rio |
| PUT | /users/:id |
Atualizar usuΓ‘rio |
| DELETE | /users/:id |
Remover usuΓ‘rio |
POST /users β body:
{
"email": "joao@email.com",
"name": "JoΓ£o Silva",
"password": "senha123"
}| MΓ©todo | Endpoint | DescriΓ§Γ£o |
|---|---|---|
| GET | /resumes |
Listar currΓculos pΓΊblicos |
| GET | /resumes/:id |
Buscar currΓculo completo (all sections) |
| POST | /resumes |
Criar currΓculo |
| PUT | /resumes/:id |
Atualizar currΓculo |
| DELETE | /resumes/:id |
Remover currΓculo (cascade) |
POST /resumes β body:
{
"user_id": "uuid",
"title": "Meu CurrΓculo Dev",
"summary": "Desenvolvedor fullstack com 5 anos de experiΓͺncia",
"is_public": true,
"slug": "joao-silva-dev",
"template": "modern"
}| MΓ©todo | Endpoint | DescriΓ§Γ£o |
|---|---|---|
| GET | /resumes/:resumeId/personal-info |
Buscar info pessoal |
| POST | /resumes/:resumeId/personal-info |
Criar info pessoal |
| PUT | /resumes/:resumeId/personal-info |
Atualizar |
| DELETE | /resumes/:resumeId/personal-info |
Remover |
πΌ Work Experiences / π Education / π οΈ Skills / π Languages / π Projects / π Certifications / π Awards / π€ Volunteer Experiences / π Publications / π₯ References
Todas as seΓ§Γ΅es seguem o mesmo padrΓ£o de rotas:
| MΓ©todo | Endpoint | DescriΓ§Γ£o |
|---|---|---|
| GET | /resumes/:resumeId/<section> |
Listar todos |
| GET | /resumes/:resumeId/<section>/:id |
Buscar por ID |
| POST | /resumes/:resumeId/<section> |
Criar |
| PUT | /resumes/:resumeId/<section>/:id |
Atualizar |
| DELETE | /resumes/:resumeId/<section>/:id |
Remover |
| PATCH | /resumes/:resumeId/<section>/reorder |
Reordenar itens |
SeΓ§Γ΅es disponΓveis:
work-experienceseducationskillslanguagesprojectscertificationsawardsvolunteer-experiencespublicationsreferences
{
"order": [
{ "id": "uuid-1", "order_index": 0 },
{ "id": "uuid-2", "order_index": 1 },
{ "id": "uuid-3", "order_index": 2 }
]
}{
"company": "Empresa XPTO",
"job_title": "Desenvolvedor Senior",
"location": "Recife, PE",
"start_date": "2021-01-01",
"end_date": null,
"is_current": true,
"description": "Desenvolvimento de APIs REST com Node.js",
"order_index": 0
}{
"institution": "UFPE",
"degree": "Bacharel",
"field_of_study": "CiΓͺncia da ComputaΓ§Γ£o",
"start_date": "2016-01-01",
"end_date": "2020-12-01",
"grade": "8.5",
"description": "..."
}{ "name": "Node.js", "level": "advanced", "category": "Backend" }
level:beginner|intermediate|advanced|expert
{ "name": "InglΓͺs", "proficiency": "professional" }
proficiency:basic|conversational|professional|native
{
"name": "AWS Solutions Architect",
"issuing_org": "Amazon Web Services",
"issue_date": "2023-06-01",
"expiry_date": "2026-06-01",
"credential_id": "ABC123",
"credential_url": "https://aws.amazon.com/verify/ABC123"
}{
"data": {
"id": "uuid",
"title": "Meu CurrΓculo",
"personal_info": { ... },
"work_experiences": [ ... ],
"education": [ ... ],
"skills": [ ... ],
"languages": [ ... ],
"projects": [ ... ],
"certifications": [ ... ],
"awards": [ ... ],
"volunteer_experiences": [ ... ],
"publications": [ ... ],
"references": [ ... ]
}
}| CΓ³digo | Significado |
|---|---|
| 400 | Dados invΓ‘lidos |
| 404 | Recurso nΓ£o encontrado |
| 409 | Conflito (duplicidade) |
| 422 | Falha de validaΓ§Γ£o |
| 500 | Erro interno do servidor |
resume-api/
βββ src/
β βββ config/
β β βββ database.js # Pool de conexΓ£o PostgreSQL
β βββ controllers/
β β βββ users.controller.js
β β βββ resumes.controller.js
β β βββ personalInfo.controller.js
β β βββ section.factory.js # Factory CRUD para todas as seΓ§Γ΅es
β βββ middlewares/
β β βββ errorHandler.js
β βββ migrations/
β β βββ schema.sql # Todas as tabelas e Γndices
β β βββ run.js
β βββ routes/
β β βββ index.js # Todas as rotas
β βββ index.js # Entry point
βββ .env.example
βββ package.json
βββ README.md