Skip to content

Commit 50b24bc

Browse files
committed
fix: update README and PdfPreviewModal styles for clarity and consistency
1 parent 835505c commit 50b24bc

3 files changed

Lines changed: 232 additions & 3 deletions

File tree

README.md

Lines changed: 230 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,230 @@
1-
# pastexam
1+
# PastExam
2+
3+
A full-stack web application for managing and sharing past exam materials, built with Vue.js frontend and FastAPI backend.
4+
5+
## Project Structure
6+
7+
```
8+
pastexam/
9+
├── frontend/ # Vue.js 3 + Vite frontend
10+
├── backend/ # FastAPI Python backend
11+
├── docker/ # Docker configuration files
12+
└── proxy/ # Nginx reverse proxy
13+
```
14+
15+
## Prerequisites
16+
17+
- **Node.js** (v18 or higher)
18+
- **Python** (v3.11 or higher)
19+
- **Docker** and **Docker Compose**
20+
- **uv** (Python package manager)
21+
22+
## Quick Start
23+
24+
### 1. Clone the repository
25+
26+
```bash
27+
git clone https://github.com/NCTUCSUnion/pastexam.git
28+
cd pastexam
29+
```
30+
31+
### 2. Start infrastructure services
32+
33+
```bash
34+
cd docker
35+
docker compose -f docker-compose.dev.yml up -d
36+
```
37+
38+
### 3. Backend setup
39+
40+
```bash
41+
cd backend
42+
uv sync
43+
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
44+
```
45+
46+
### 4. Frontend setup
47+
48+
```bash
49+
cd frontend
50+
npm install
51+
npm run dev
52+
```
53+
54+
## Development
55+
56+
### Frontend Development
57+
58+
#### Project setup
59+
60+
```bash
61+
cd frontend
62+
npm install
63+
```
64+
65+
#### Compiles and hot-reloads for development
66+
67+
```bash
68+
npm run dev
69+
```
70+
71+
#### Compiles and minifies for production
72+
73+
```bash
74+
npm run build
75+
```
76+
77+
#### Linting & Formatting
78+
79+
**ESLint**
80+
81+
```bash
82+
npm run lint
83+
# or
84+
npx eslint --ext .js,.vue src
85+
```
86+
87+
**Prettier**
88+
89+
```bash
90+
npm run format
91+
# or
92+
npx prettier --write .
93+
```
94+
95+
### Backend Development
96+
97+
#### Project setup
98+
99+
```bash
100+
cd backend
101+
uv sync
102+
```
103+
104+
#### Run development server
105+
106+
```bash
107+
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
108+
```
109+
110+
#### Run tests
111+
112+
```bash
113+
uv run pytest
114+
```
115+
116+
## Docker Deployment
117+
118+
### Development Environment
119+
120+
```bash
121+
cd docker
122+
docker compose -f docker-compose.dev.yml up -d
123+
```
124+
125+
### Production Environment
126+
127+
```bash
128+
cd docker
129+
docker compose up -d
130+
```
131+
132+
## Environment Variables
133+
134+
### Backend (.env)
135+
136+
```env
137+
# Database
138+
POSTGRES_USER=your_db_user
139+
POSTGRES_PASSWORD=your_db_password
140+
POSTGRES_DB=your_db_name
141+
POSTGRES_PORT=5432
142+
143+
# Redis
144+
REDIS_URL=redis://localhost:6379
145+
146+
# MinIO
147+
MINIO_ROOT_USER=your_minio_user
148+
MINIO_ROOT_PASSWORD=your_minio_password
149+
150+
# JWT
151+
SECRET_KEY=your_secret_key
152+
ALGORITHM=HS256
153+
ACCESS_TOKEN_EXPIRE_MINUTES=30
154+
```
155+
156+
## Configuration
157+
158+
### Frontend Configuration
159+
160+
The frontend configuration is handled through Vite and can be customized in `frontend/vite.config.js`.
161+
162+
### Backend Configuration
163+
164+
Backend configuration is managed through Pydantic settings in `backend/app/core/config.py`.
165+
166+
## API Documentation
167+
168+
Once the backend is running, you can access the interactive API documentation at:
169+
170+
- **Swagger UI**: http://localhost:8000/docs
171+
- **ReDoc**: http://localhost:8000/redoc
172+
173+
## Testing
174+
175+
### Frontend Tests
176+
177+
```bash
178+
cd frontend
179+
npm run test
180+
```
181+
182+
### Backend Tests
183+
184+
```bash
185+
cd backend
186+
uv run pytest
187+
```
188+
189+
## Build for Production
190+
191+
### Frontend Build
192+
193+
```bash
194+
cd frontend
195+
npm run build
196+
```
197+
198+
### Backend Build
199+
200+
```bash
201+
cd backend
202+
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000
203+
```
204+
205+
## Deployment
206+
207+
### Using Docker Compose
208+
209+
```bash
210+
cd docker
211+
docker compose up -d
212+
```
213+
214+
### Manual Deployment
215+
216+
1. Build the frontend: `npm run build`
217+
2. Start the backend: `uv run uvicorn app.main:app --host 0.0.0.0 --port 8000`
218+
3. Configure Nginx to serve the frontend and proxy to the backend
219+
220+
## License
221+
222+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
223+
224+
## Support
225+
226+
If you encounter any issues or have questions, please:
227+
228+
1. Check the [Issues](https://github.com/your-repo/issues) page
229+
2. Create a new issue with detailed information
230+
3. Contact the development team

backend/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
```bash
1212
uv sync
13-
uv run uvicorn app:main --reload --host 0.0.0.0 --port 8000
13+
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
1414
```
1515

1616
3. 開啟瀏覽器到 http://localhost:8000/docs,可看到 Swagger UI,並測試各 API。

frontend/src/components/PdfPreviewModal.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<Dialog
33
:visible="localVisible"
44
@update:visible="localVisible = $event"
5-
:style="{ width: '1200px', maxWidth: '95vw', height: '90vh' }"
5+
:style="{ width: '1200px', height: '90vh' }"
66
:contentStyle="{ height: '80vh' }"
77
:modal="true"
88
:draggable="false"

0 commit comments

Comments
 (0)