GithubHelp home page GithubHelp logo

payhere-backend's Introduction

💸 페이헤이

소비내역을 기록/관리하는 서버

📜 목차

📔 프로젝트 요구사항

  1. 고객은 이메일과 비밀번호 입력을 통해서 회원 가입을 할 수 있습니다.
  2. 고객은 회원 가입이후, 로그인과 로그아웃을 할 수 있습니다.
  3. 고객은 로그인 이후 가계부 관련 아래의 행동을 할 수 있습니다.
    • 가계부에 오늘 사용한 돈의 금액과 관련된 메모를 남길 수 있습니다.
    • 가계부에서 수정을 원하는 내역은 금액과 메모를 수정 할 수 있습니다.
    • 가계부에서 삭제를 원하는 내역은 삭제 할 수 있습니다.
    • 삭제한 내역은 언제든지 다시 복구 할 수 있어야 한다.
    • 가계부에서 이제까지 기록한 가계부 리스트를 볼 수 있습니다.
    • 가계부에서 상세한 세부 내역을 볼 수 있습니다.
  4. 로그인하지 않은 고객은 가계부 내역에 대한 접근 제한 처리가 되어야 합니다.

🐳 Development(Docker)

# Application Run
docker-compose up

🔎 Development(Poetry)

# 가상환경 진입
poetry shell

# 관련 패키지 설치
poetry install

# Application Run
python manage.py runserver

✏️ Commit Message Convention

  • feat: 기능 추가, 삭제, 변경(or ✨ emoji) - 제품 코드 수정 발생
  • fix: 버그 수정(or 🐛 emoji) - 제품 코드 수정 발생
  • docs: 문서 추가, 삭제, 변경(or 📝 emoji) - 코드 수정 없음
  • style: 코드 형식, 정렬, 주석 등의 변경, eg; 세미콜론 추가(or 💎 emoji) - 제품 코드 수정 발생, 하지만 동작에 영향을 주는 변경은 없음
  • refactor: 코드 리펙토링, eg. renaming a variable(or ♻️ emoji) - 제품코드 수정 발생
  • test: 테스트 코드 추가, 삭제, 변경 등(or 🧪 emoji) - 제품 코드 수정 없음. 테스트 코드에 관련된 모든 변경에 해당
  • chore: 위에 해당하지 않는 모든 변경(or 🧹 emoji), eg. 빌드 스크립트 수정, 패키지 배포 설정 변경 - 코드 수정 없음

위 규칙에 맞게 커밋메시지를 작성한다.

📈 Git Flow / Branch Information

- main: 제품으로 출시 될 수 있는 브랜치입니다.
- develop: 다음 출시 버전을 개발합니다.
- feature: 다가오는 배포(release)를 위한 새 기능(feature)을 개발합니다.
- release: 새로운 제품 출시 준비를 지원합니다.
- hotfix: 핫픽스는 현재 출시된 제품에 문제가 생겨서 즉각 대응해야하는 상황에서 필요합니다.

📕 API Docs

회원가입

Method URL Description
POST api/v1/users/signup/ 회원가입을 진행합니다.
  • Request Example
    {
      "email": "[email protected]", // required
      "password": "qwer1234!", // required
      "username": "test1" // required
    }
  • Response Example
    {
      "ok": true
    }

로그인

Method URL Description
POST api/v1/users/login/ 유저 이메일을 검증 후 JWT를 반환합니다.
  • Request Example
    {
      "email": "[email protected]", // required
      "password": "qwer1234!" // required
    }
  • Response Example
    {
      "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY2NzYyMjMwMywiaWF0IjoxNjY3NTM1OTAzLCJqdGkiOiIyZWFlMjkxNjM4NGM0ZTM0ODZhMWNkZWRkZGE2YjM2YSIsInVzZXJfaWQiOjF9.v0BdSHzqN_uV14qX8cxLreOv1JLg1SM4i420lkl57xg",
      "access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjY3NTM2MjAzLCJpYXQiOjE2Njc1MzU5MDMsImp0aSI6Ijk4NzJjMDg4YzFmMjRlNGY5NjJmZGZmZWM1NjVhN2MwIiwidXNlcl9pZCI6MX0.e-hiZIYBfL5ibTq_IUYbm-1molzLhoLsTxfA_E3Do14"
    }

토큰 재발급

Method URL Description
POST api/v1/users/token/refresh/ refresh token을 확인 후 access token을 반환합니다.
  • Request Example
    {
      "refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY2NzYyMjMwMywiaWF0IjoxNjY3NTM1OTAzLCJqdGkiOiIyZWFlMjkxNjM4NGM0ZTM0ODZhMWNkZWRkZGE2YjM2YSIsInVzZXJfaWQiOjF9.v0BdSHzqN_uV14qX8cxLreOv1JLg1SM4i420lkl57xg" // required
    }
  • Response Example
    {
      "access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjY3NTM2MjkxLCJpYXQiOjE2Njc1MzU5MDMsImp0aSI6ImU1ZWI4NjcyODRkMzRiZjVhNGZkYjBjYTI2NDJkODU5IiwidXNlcl9pZCI6MX0.9mq-i5hnPJhxTxpjracgnOFHwcVxTUa1LCY9yvGJ3uA"
    }

가계부 내역 확인

Method URL Description Header
GET api/v1/households/ 자신의 가계부 내역을 확인합니다. Authorization: Bearer {access token}
  • Response Example
    [
      {
        "id": 2,
        "amount": 35000,
        "memo": "고깃집",
        "created_at": "2022-11-03T19:47:45.434960+09:00"
      },
      {
        "id": 3,
        "amount": 20000,
        "memo": "",
        "created_at": "2022-11-03T19:48:12.478745+09:00"
      },
      {
        "id": 4,
        "amount": 5000,
        "memo": "편의점",
        "created_at": "2022-11-03T19:48:44.092476+09:00"
      }
    ]

가계부 내역 기록

Method URL Description Header
POST api/v1/households/ 자신의 가계부 내역을 기록합니다. Authorization: Bearer {access token}
  • Request Example
    {
      "amount": 9000, // required
      "memo": "미용실" // optional
    }
  • Response Example
    {
      "ok": true
    }

가계부 내역의 세부 내용

Method URL Description Header
GET api/v1/households/{pk}/ 자신의 가계부 내역의 세부 내역을 확인합니다. Authorization: Bearer {access token}
  • Response Example
    {
      "id": 2,
      "amount": 35000,
      "memo": "",
      "created_at": "2022-11-03T19:47:45.434960+09:00"
    }

가계부 내역 수정

Method URL Description Header
PATCH api/v1/households/{pk}/ 자신의 가계부 내역을 수정합니다. Authorization: Bearer {access token}
  • Request Example
    {
      "amount": 9000, // optional
      "memo": "미용실" // optional
    }
  • Response Example
    {
      "ok": true
    }

가계부 내역 삭제

Method URL Description Header
POST api/v1/households/{pk}/inactive/ 자신의 가계부 내역을 삭제합니다. Authorization: Bearer {access token}
  • Response Example
    {
      "ok": true
    }

가계부 내역 복구

Method URL Description Header
POST api/v1/households/{pk}/active/ 자신의 가계부 내역을 복구합니다. Authorization: Bearer {access token}
  • Response Example
    {
      "ok": true
    }

♻️ 테스트

Found 10 test(s).
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..........
----------------------------------------------------------------------
Ran 10 tests in 0.736s

OK
Destroying test database for alias 'default'...
  • 유저
    • 회원가입
      • 필수 데이터 체크 테스트
      • 회원가입 성공 테스트
    • 로그인
      • 필수 데이터 체크 테스트
      • 패스워드 확인 테스트
      • 로그인 성공 테스트
  • 가계부
    • 가계부 내역
      • 로그인 테스트
      • 가계부 내역 성공 테스트
    • 가계부 내역 생성
      • 로그인 테스트
      • 필수 데이터 체크 테스트
      • 가계부 내역 작성 성공 테스트

payhere-backend's People

Contributors

hojin9622 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.