Skip to content

dikrifzn/pameraja-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

10 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ผ PamerAja API

API ini dibuat menggunakan Django & Django REST Framework untuk mengelola pengguna, media sosial, proyek, komentar, dan fitur interaksi lainnya. Dokumentasi ini mengikuti struktur collection Postman yang telah disiapkan.

๐ŸŒ Base URL

{{base_url}} = http://127.0.0.1:8000/api

๐Ÿ” Authentication

1. Register

  • Endpoint: POST {{base_url}}/auth/register/
  • Headers: Content-Type: application/json
  • Body:
{
  "username": "testuser",
  "password": "testpassword",
  "email": "test@example.com"
}
  • Response:
{
  "status": true,
  "message": "User registered successfully",
  "data": {
    "id": 1,
    "username": "testuser",
    "email": "test@example.com"
  }
}

2. Login

  • Endpoint: POST {{base_url}}/auth/login/
  • Body:
{
  "username": "testuser",
  "password": "testpassword"
}
  • Response:
{
  "status": true,
  "message": "Login successful",
  "data": {
    "access": "<JWT_ACCESS_TOKEN>",
    "refresh": "<JWT_REFRESH_TOKEN>"
  }
}

3. Refresh Token

  • Endpoint: POST {{base_url}}/auth/token/refresh/
  • Body:
{
  "refresh": "{{refresh_token}}"
}
  • Response:
{
  "status": true,
  "message": "Token refreshed",
  "data": {
    "access": "<NEW_ACCESS_TOKEN>"
  }
}

4. Logout

  • Endpoint: POST {{base_url}}/auth/logout/
  • Headers: Authorization: Bearer {{access_token}}
  • Body:
{
  "refresh": "{{refresh_token}}"
}
  • Response:
{
  "status": true,
  "message": "Successfully logged out"
}

๐Ÿ‘ค User Profile

5. Get Profile

  • Endpoint: GET {{base_url}}/users/
  • Headers: Authorization: Bearer {{access_token}}
  • Response:
{
  "status": true,
  "message": "User profile retrieved",
  "data": {
    "id": 1,
    "username": "testuser",
    "email": "test@example.com",
    "position": "CEO",
    "address": "Jl. Veteran No. 140"
  }
}

6. Update Profile

  • Endpoint: PUT {{base_url}}/users/
  • Headers: Authorization: Bearer {{access_token}}
  • Body:
{
  "username": "updateduser",
  "email": "userupdate@gmail.com",
  "position": "Designer",
  "address": "Jl. Baru"
}
  • Response:
{
  "status": true,
  "message": "User profile updated successfully",
  "data": {
    "username": "updateduser",
    "email": "userupdate@gmail.com",
    "position": "Designer",
    "address": "Jl. Baru"
  }
}

7. Delete Profile

  • Endpoint: DELETE {{base_url}}/users/
  • Headers: Authorization: Bearer {{access_token}}
  • Response:
{
  "status": true,
  "message": "User deleted successfully"
}

๐ŸŒ Social Media

8. Get Social Media

  • Endpoint: GET {{base_url}}/users/social-media/
  • Headers: Authorization: Bearer {{access_token}}
  • Response:
{
  "status": true,
  "message": "Social media retrieved",
  "data": [
    {
      "id": 1,
      "name": "Instagram",
      "url": "https://instagram.com/testuser"
    }
  ]
}

9. Create Social Media

  • Endpoint: POST {{base_url}}/users/social-media/
  • Body:
{
  "name": "Instagram",
  "url": "https://instagram.com/testuser"
}
  • Response:
{
  "status": true,
  "message": "Social media created",
  "data": {
    "id": 1,
    "name": "Instagram",
    "url": "https://instagram.com/testuser"
  }
}

10. Update Social Media

  • Endpoint: PUT {{base_url}}/users/social-media/{id}/
  • Body:
{
  "name": "Updated IG",
  "url": "https://instagram.com/updateduser"
}

11. Delete Social Media

  • Endpoint: DELETE {{base_url}}/users/social-media/{id}/

๐Ÿ“ Project

12. Create Project

  • Endpoint: POST {{base_url}}/projects/

  • Headers: Content-Type: multipart/form-data

  • Body (Form Data):

    • title: "My Project"
    • description: "Project description"
    • category: "Design"
    • image_url: (file)
  • Response:

{
  "status": true,
  "message": "Project created successfully",
  "data": {
    "id": 1,
    "title": "My Project",
    "description": "Project description",
    "category": "Design",
    "image_url": "http://..."
  }
}

13. Update Project

  • Endpoint: PUT {{base_url}}/projects/{id}/
  • Body (Form Data): sama seperti create
  • Response:
{
  "status": true,
  "message": "Project updated successfully",
  "data": {
    "id": 1,
    "title": "Updated Project",
    "description": "Updated description",
    "category": "Updated Category",
    "image_url": "http://..."
  }
}

14. Delete Project

  • Endpoint: DELETE {{base_url}}/projects/{id}/
  • Response:
{
  "status": true,
  "message": "Project deleted successfully"
}

โค๏ธ Likes

15. Add or Remove Like

  • Endpoint: POST {{base_url}}/projects/{id}/likes/

16. Get Likes

  • Endpoint: GET {{base_url}}/projects/{id}/likes/
  • Response:
{
  "status": true,
  "message": "Likes retrieved",
  "data": {
    "likes_count": 5,
    "liked_by": [
      {
        "id": 1,
        "username": "user"
      }
    ]
  }
}

๐Ÿ’ฌ Comments

17. Get Comments

  • Endpoint: GET {{base_url}}/projects/{id}/comments/

18. Create Comment

  • Endpoint: POST {{base_url}}/projects/{id}/comments/
  • Body:
{
  "content": "Great project!"
}
  • Response:
{
  "status": true,
  "message": "Comment created",
  "data": {
    "id": 1,
    "content": "Great project!",
    "user": "testuser"
  }
}

19. Update Comment

  • Endpoint: PUT {{base_url}}/comments/{id}/
  • Body:
{
  "content": "Updated content"
}

20. Delete Comment

  • Endpoint: DELETE {{base_url}}/comments/{id}/

๐Ÿšง Database Models

User

Field Type
username CharField
email EmailField (unique)
position CharField
address TextField
image_url ImageField
created_at DateTime
edited_at DateTime

SocialMedia

Field Type
id_user ForeignKey (User)
name CharField
url CharField
created_at DateTime
edited_at DateTime

Project

Field Type
id_user ForeignKey (User)
title CharField
description TextField
category CharField
file_url CharField (optional)
image_url ImageField
views Integer
created_at DateTime
edited_at DateTime

Comment

Field Type
id_user ForeignKey (User)
id_project ForeignKey (Project)
message TextField
created_at DateTime
edited_at DateTime

Like

Field Type
id_user ForeignKey (User)
id_project ForeignKey (Project)

๐Ÿ› ๏ธ Setup Project Locally

git clone https://github.com/dikrifzn/pameraja-backend.git
cd pameraja-backend
pip install pipenv
pipenv install
pipenv shell
python manage.py migrate
python manage.py runserver

๐Ÿงฐ Tech Stack

  • Django
  • Django REST Framework
  • JWT Authentication
  • PostgreSQL / MySQL (configurable)

๐Ÿ“ฎ For more information, check out the Postman Collection

created by Dikri Fauzan Amrulloh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages