You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
6
6
7
7
## Features 🚀
8
+
8
9
- Jobs update automatically every single day from various sources (automatically deduplicated)
9
10
- 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)
11
12
- 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
12
20
13
21
## Frontend
14
22
@@ -18,6 +26,31 @@ This is a modern, intelligent job board platform that automatically aggregates j
18
26
- Mantine UI: For consistent, accessible UI components
19
27
- Tailwind CSS: For utility-first styling and responsive design
20
28
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
+
21
54
## Backend
22
55
23
56
- Server Actions: Answers search and feedback requests
@@ -27,35 +60,38 @@ This is a modern, intelligent job board platform that automatically aggregates j
27
60
## Getting Started
28
61
29
62
### Prerequisites
63
+
30
64
- Node.js 20+
31
65
- Java 17
32
66
- Go 1.21+
33
67
- Docker & Docker Compose
34
68
- Redis
35
69
36
70
### 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
42
71
43
-
# Frontend only
72
+
```bash
44
73
cd frontend
45
74
npm install
46
75
npm run dev
76
+
```
47
77
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
51
86
```
52
87
53
88
## Development Guidelines
54
89
55
90
### Git Workflow
56
91
57
92
#### Branch Structure
58
-
-`main` - Production branch
93
+
94
+
-`production` - Production branch
59
95
-`dev` - Development branch
60
96
- Feature branches follow the pattern:
61
97
```
@@ -64,6 +100,19 @@ cd backend
64
100
- backend/edwn/redis-caching
65
101
- frontend/sarah/job-filters
66
102
```
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.
0 commit comments