Skip to content

Commit 24b3499

Browse files
committed
Consolidate README
1 parent cf8132f commit 24b3499

File tree

2 files changed

+63
-250
lines changed

2 files changed

+63
-250
lines changed

README.md

Lines changed: 63 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
# MAC Job Board
1+
# MPLOY - MAC Job Board
22

33
Hey there! 👋
44

55
This is a modern, intelligent job board platform that automatically aggregates job listings, providing users with a streamlined experience to search, filter, and discover relevant opportunities. The platform updates daily with fresh listings through our smart AI robots.
66

77
## Features 🚀
8+
89
- Jobs update automatically every single day from various sources (automatically deduplicated)
910
- We use AI to help fix, sort and summarise the listings
10-
- You can filter for exactly what you want (e.g. Big Tech Intern Roles for Interational students)
11+
- You can filter for exactly what you want (e.g. Big Tech Intern Roles for International students)
1112
- Works perfectly on phone or laptop
13+
- Server-side rendering (where possible) with Next.js 15 App Router
14+
- Multiple filters can be applied at once, including text search
15+
- Desktop/mobile responsive UI: list/details on desktop, modal on mobile
16+
- State persists in URL: search, filters, pagination (`/jobs?q=dev&location=sydney&page=2`)
17+
- Direct job links supported (`/jobs/[id]`)
18+
- Parallel data fetching for faster loads
19+
- Real-time job search with debouncing
1220

1321
## Frontend
1422

@@ -18,6 +26,31 @@ This is a modern, intelligent job board platform that automatically aggregates j
1826
- Mantine UI: For consistent, accessible UI components
1927
- Tailwind CSS: For utility-first styling and responsive design
2028

29+
### Key Patterns
30+
31+
- **State Management**: Start with props; use custom hooks for reusable logic; Context for global state (e.g., job filters).
32+
- **Data Flow**: URL as source of truth for filters/search; debounced API calls; prefetching for pagination.
33+
- **Components**: Keep thin (50-150 lines); use layouts for shared UI; mark client components with "use client".
34+
- **Features Used**: Intercepting routes for modals; Suspense for loading; Error boundaries; useMemo/useRef for optimization.
35+
36+
### Structure
37+
38+
```
39+
src/
40+
├── app/
41+
│ ├── jobs/ # Main jobs route with filters, listing, details
42+
│ │ ├── [id]/ # Dynamic job page
43+
│ │ └── error.tsx # Job-specific error handling
44+
│ ├── layout.tsx # Root layout with providers
45+
│ └── page.tsx # Home (redirects to /jobs)
46+
├── components/
47+
│ ├── jobs/ # Job cards, lists, details, filters
48+
│ └── layout/ # Nav, logo, search bar
49+
├── context/
50+
│ └── filter/ # Filter state provider
51+
└── lib/ # Utils, theme
52+
```
53+
2154
## Backend
2255

2356
- Server Actions: Answers search and feedback requests
@@ -27,35 +60,38 @@ This is a modern, intelligent job board platform that automatically aggregates j
2760
## Getting Started
2861

2962
### Prerequisites
63+
3064
- Node.js 20+
3165
- Java 17
3266
- Go 1.21+
3367
- Docker & Docker Compose
3468
- Redis
3569

3670
### Local Development
37-
```bash
38-
# Start all services
39-
docker compose -f docker-compose.dev.yml up
40-
# Alternative if Make is installed
41-
make dev
4271

43-
# Frontend only
72+
```bash
4473
cd frontend
4574
npm install
4675
npm run dev
76+
```
4777

48-
# Backend only
49-
cd backend
50-
./gradlew bootRun
78+
## Environment Variables
79+
80+
```
81+
MONGODB_URI=
82+
MONGODB_DATABASE=default
83+
MONGODB_COLLECTION=listings
84+
85+
NODE_ENV=development
5186
```
5287

5388
## Development Guidelines
5489

5590
### Git Workflow
5691

5792
#### Branch Structure
58-
- `main` - Production branch
93+
94+
- `production` - Production branch
5995
- `dev` - Development branch
6096
- Feature branches follow the pattern:
6197
```
@@ -64,6 +100,19 @@ cd backend
64100
- backend/edwn/redis-caching
65101
- frontend/sarah/job-filters
66102
```
67-
103+
104+
### Coding Conventions
105+
106+
- Use kebab-case for files (e.g., `product-card.ts`); camelCase for hooks (e.g., `useCustomHook`).
107+
- Group related components in feature directories (e.g., `components/jobs/filters/`).
108+
- Prioritize server components; use "use client" only when needed.
109+
- Build with scalability and observability in mind (e.g., structured logging with Pino).
110+
111+
## Deployment (Development and Production)
112+
113+
- We are deployed on Azure Container Apps via Github Actions.
114+
- GitHub Actions -> builds containers -> Azure Containers Registry -> Azure Container Apps.
115+
68116
## License
69-
This project is licensed under the MIT License.
117+
118+
This project is licensed under the MIT License.

frontend/README.md

Lines changed: 0 additions & 236 deletions
This file was deleted.

0 commit comments

Comments
 (0)