Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
78ac406
feat: SSE 기본 ping 이벤트 사실 상 제거 / CodeSubmission 에러 조건 추가
minkyu97 Aug 12, 2024
657ead8
debug hodu api
minkyu97 Aug 13, 2024
5f7a94b
feat: db 모델 정의 (#73)
mjy926 Jul 3, 2025
375f4c9
fix: db model 수정 (#74)
mjy926 Jul 4, 2025
4882236
Feat/project api (#75)
deveroskp Jul 7, 2025
705f541
feat: seminar api 구현 (#76)
mjy926 Jul 10, 2025
360440f
fix/project-api (#77)
deveroskp Jul 10, 2025
14a849a
Feat/member api (#78)
deveroskp Jul 10, 2025
889583b
Feat/review api (#79)
deveroskp Jul 13, 2025
7917594
Feat/review api (#81)
deveroskp Jul 13, 2025
71ac91d
feat: history api 구현 (#80)
mjy926 Jul 13, 2025
03b2b70
URI 수정 (#82)
deveroskp Jul 14, 2025
9fea189
fix: project url enum type (#83)
mjy926 Jul 15, 2025
7b80696
sponsor api 구현 (#84)
deveroskp Jul 16, 2025
466ffdd
feat: question api 구현 (#85)
mjy926 Jul 16, 2025
89f9a93
Feat: timeline api 구현 (#86)
deveroskp Jul 17, 2025
0831af7
Fix: Project api, Recruiting api 수정 (#87)
deveroskp Jul 18, 2025
aa96a4b
fix: 빈 리스트 반환 (#88)
mjy926 Jul 18, 2025
217ceab
feat: preregistration api (#89)
mjy926 Jul 19, 2025
eab96b6
Fix/project image upload (#90)
deveroskp Jul 20, 2025
e57fc0b
Chore: 어드민 페이지 수정 (#91)
deveroskp Jul 21, 2025
49eef86
Hotfix: history response 수정 (#92)
deveroskp Jul 21, 2025
85fff39
fix: 라우터 중복 등록 수정 (#93)
mjy926 Jul 21, 2025
c67dcd1
fix: recruiting enum type (#94)
mjy926 Aug 1, 2025
60ff29d
fix: testcase 크기 수정 (#95)
mjy926 Aug 4, 2025
a1721bb
fix: testcase 입력 수정 (#96)
mjy926 Aug 5, 2025
e07579f
fix: submission result cascade 설정 (#97)
mjy926 Aug 7, 2025
b190ef5
chore: timeline 테스트 코드 작성 (#98)
mjy926 Aug 17, 2025
5979069
Feat: pre-registration 테스트 코드 작성 (#99)
deveroskp Aug 17, 2025
cfd69e8
Feat: sponsor test 코드 작성 & sponsor 코드 수정 (#100)
deveroskp Aug 26, 2025
566fe49
chore: 세미나 api 테스트 코드 작성 (#101)
mjy926 Aug 31, 2025
b7b9967
Feat: faq api 테스트 코드 구현 (#102)
deveroskp Sep 1, 2025
47dcc45
chore: 코드래빗 yaml 추가 (#103)
mjy926 Sep 4, 2025
664238e
feat: arm64 전환 (#104)
mjy926 Sep 7, 2025
c33697a
Fix: Review Response에 멤버 기수 포함 (#105)
deveroskp Sep 8, 2025
bfa4421
fix: merge conflict 수정 (#107)
mjy926 Sep 9, 2025
3b5e850
fix: member 필터링 (#109)
mjy926 Sep 14, 2025
2c211e5
Fix: portfolio file service (#112)
deveroskp Sep 29, 2025
0f38436
Hotfix/project api (#110)
deveroskp Oct 1, 2025
301175f
Feat: 프로젝트 이미지 업로드, 수정, 삭제 api 구현 (#114)
deveroskp Oct 7, 2025
1c60a1e
Feat: 로그인 기능 추가 (#115)
mjy926 Nov 10, 2025
7adaa79
Fix/116 thumbnail and member api (#117)
deveroskp Nov 12, 2025
cf7354a
Fix: history response (#118)
mjy926 Nov 29, 2025
002b813
Build: migrate to uv (#119)
mjy926 Dec 30, 2025
8a45a89
Fix: problem 테이블 중복 속성 제거 (#121)
deveroskp Jan 2, 2026
62f3234
Fix: 순수 ASGI 인터페이스로 수정 (#123)
deveroskp Jan 10, 2026
2f8c4d5
Fix/122 admin page (#124)
deveroskp Jan 13, 2026
ef69c69
Fix: admin 페이지 접근 문제 수정 (#125)
mjy926 Jan 16, 2026
f9d18ae
Fix: user duplicate (#126)
mjy926 Jan 26, 2026
49095bf
fix: 이메일로 로그인 (#127)
mjy926 Feb 10, 2026
83f9c61
merge 충돌 해결 (#129)
mjy926 Feb 27, 2026
ff24a07
fix: conflict
mjy926 Feb 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .env.test
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ DB_NAME=testdb
DB_HOST=127.0.0.1
DB_PORT=3307
S3_PORTFOLIO_BUCKET_NAME=wacruit-portfolio-test
TOKEN_SECRET=test
SLACK_API_TOKEN=""
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto
22 changes: 9 additions & 13 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,19 @@ jobs:
- name: change mysql charset
run: mysql -h 127.0.0.1 -P 3307 -u root -p'root-password' -e "ALTER DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"

- uses: actions/setup-python@v4
- name: Setup uv
uses: astral-sh/setup-uv@v3
with:
python-version: 3.11
enable-cache: true

- name: Install poetry
run: pipx install poetry --python python3.11

- name: Set poetry environment & install dependencies
run: |
poetry config virtualenvs.in-project true
poetry env use 3.11
poetry install --no-root
- name: Install dependencies
run: uv sync --frozen

- name: Run tests
run: |
cd ${GITHUB_WORKSPACE}/wacruit/
poetry run pytest --junit-xml=${GITHUB_WORKSPACE}/wacruit/test.xml ./
uv run pytest --junit-xml=${GITHUB_WORKSPACE}/wacruit/test.xml ./

- name: Test reports
uses: dorny/test-reporter@v1
Expand All @@ -61,10 +57,10 @@ jobs:
- name: Run pre-commit
run: |
git fetch origin ${{ github.base_ref }}
poetry run pre-commit run --from-ref origin/${{ github.base_ref }} --to-ref HEAD
uv run pre-commit run --from-ref origin/${{ github.base_ref }} --to-ref HEAD

- name: Run alembic migration test
run: |
mkdir -p wacruit/src/database/migrations/versions
ls wacruit/src/database/migrations/versions/* || poetry run alembic revision --autogenerate
poetry run alembic upgrade head
ls wacruit/src/database/migrations/versions/* || uv run alembic revision --autogenerate
uv run alembic upgrade head
24 changes: 14 additions & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
FROM python:3.11-bookworm as builder
FROM python:3.11-bookworm AS builder

RUN pip install poetry==1.5.0
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

ENV POETRY_NO_INTERACTION=1 \
POETRY_VIRTUALENVS_IN_PROJECT=1 \
POETRY_VIRTUALENVS_CREATE=1 \
POETRY_CACHE_DIR=/tmp/poetry_cache
ENV UV_COMPILE_BYTECODE=1 \
UV_HTTP_TIMEOUT=300 \
UV_LINK_MODE=copy \
UV_PROJECT_ENVIRONMENT=/app/.venv

WORKDIR /app

COPY pyproject.toml poetry.lock ./
COPY pyproject.toml uv.lock ./

RUN --mount=type=cache,target=$POETRY_CACHE_DIR poetry install --without dev --no-root
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --frozen --no-dev --no-install-project

FROM python:3.11-slim-bookworm as runtime
FROM python:3.11-slim-bookworm AS runtime

ARG ENV

ENV VIRTUAL_ENV=/app/.venv \
PATH="/app/.venv/bin:$PATH" \
env=$ENV
env=$ENV \
PYTHONUNBUFFERED=1

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
libmariadb-dev \
Expand Down
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# wacruit-server

[![Python 3.11.1](https://img.shields.io/badge/python-3.11.1-blue.svg)](https://www.python.org/downloads/release/python-3111/)
[![Poetry 1.5.1](https://img.shields.io/badge/poetry-1.5.1-yellow.svg)](https://github.com/python-poetry/poetry/releases/tag/1.5.1)
[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)

## Prerequisites

- Python version 3.11 and above is required.
- Install [Poetry](https://python-poetry.org/docs/#installation) package manager to install all the dependencies.
- Install [uv](https://docs.astral.sh/uv/getting-started/installation/) package manager to install all the dependencies.
- A MySQL client is required for database operations in your local machine. On macos, you can install via `brew install mysql-client` or `brew install mysql`. Don't forget to add it to PATH.
- This project requires [wacruit-judge](https://github.com/wafflestudio/wacruit-judge) which is the fork version of [Judge0](https://github.com/judge0/judge0). To test this project, you first need to clone wacruit-judge and run it using docker-compose.

Expand All @@ -16,10 +16,9 @@

Run the following command to install all the dependencies:
```bash
poetry config virtualenvs.in-project true
poetry install
uv sync
```
The above command will install all the required dependencies in a virtual environment. **Ensure that poetry have created `.venv` folder inside the project root. Otherwise pre-commit hooks won't work.**
The above command will install all the required dependencies in a virtual environment.

### Pre-commit hooks

Expand Down
Loading
Loading