
An interactive, real-time platform for Scandinavian software developers to discover, apply for, and engage with job opportunities. Beyond static listings, ScandevJobs emphasizes user-generated data, live notifications, and community-driven insights to create a dynamic and engaging job-hunting experience. Our primary objective is to create a software‑developer job market in scandinavia that’s both highly transparent and easily accessible.
Important stuff to start the app
Update Database
Update local database with exisiting migrations:
in the nuget package manager console:
Update-Database
Create new database migration, (when changes are made to the datamodel)
Add-Migration NameOfMigration (first letter should be capital)
AZURE storage blob
install:
npm install -g azurite
debug with:
azurite --location c:\azurite --debug c:\azurite\debug.log
run with:
azurite --silent --location C:\path\to\your\data
Table of Contents
Description
ScandevJobs allows developers to:
- Create and customize profiles (skills, CV, preferences).
- Browse and filter job listings in real time.
- Track application status with live updates.
- Chat with recruiters.
- View job locations on an interactive map.
Domains
- scandevjobs.com
- scandevjobs.se
- scandevjob.com
- scandevjob.se
- nordicdevjobs.com
- nordicdevjobs.se
- scanjobs.dev
- scanjob.dev
Technologies & Frameworks
Frontend
- Svelte (TypeScript): Core reactive components and state management.
- SvelteKit: Server-side rendering (SSR) and rich client-side interactivity.
- Tailwind CSS: Utility-first styling.
- SignalR: Real-time updates and notifications.
- Leaflet.js: Interactive maps for geospatial job displays.
Backend
- ASP.NET Core 7 (C#): Web API for RESTful and GraphQL endpoints.
- Entity Framework Core with PostgreSQL: Relational data storage.
- Azure Blob Storage: Storing company-uploaded images and media.
- ASP.NET Identity with JWT tokens: Authentication and authorization.
- SignalR Hub: Real-time messaging and notifications.
APIs & Integrations
- HotChocolate GraphQL: Advanced querying, filtering, and subscriptions.
- Stripe: Stripe for managing payments.
Architecture Overview
- Server-Side Rendering (SSR): SvelteKit renders initial pages on the server for SEO and fast load times.
- API Layer: ASP.NET Core exposes REST under
/api/ and GraphQL under /graphql.
- Real-Time Layer: SignalR Hubs manage live chat, notifications, and application pipeline updates.
- Data Layer: PostgreSQL database managed via EF Core migrations.
- Storage Layer: Azure Blob Storage (or emulator) for media assets.
Main Features
- User Accounts & Profiles
- Email verification, profile editing, CV uploads.
- Job Listings
- Companies post jobs via a secure dashboard.
- Users search, filter, bookmark, and subscribe to listings.
- Application Pipeline
- Track statuses (Applied, Interviewing, Offer, Rejected) with live notifications.
- Company Reviews & Ratings
- Submit reviews, view aggregate scores.
- Real-Time Chat
- Interactive Map
- Display job locations, filter by region or distance.
- Notifications
- Live Filtered Feed (using GraphQL Subscriptions)
- Receive only relevant new job postings matching user criteria.
Data Model
Entities
- User
- Job
- Application
- Company
- Review
- Message
- Notification
- Tags
Relationships
User ↔ Application ↔ Job
User ↔ Review ↔ Company
User ↔ Message (SignalR conversations)
User ↔ Notification
User ↔ Badge
API Endpoints
Jobs
GET /api/jobs
POST /api/jobs
PUT /api/jobs/{id}
DELETE /api/jobs/{id}
Applications
GET /api/users/{userId}/applications
POST /api/jobs/{jobId}/apply
PATCH /api/applications/{id}
Reviews
GET /api/companies/{companyId}/reviews
POST /api/companies/{companyId}/reviews
Auth
POST /api/auth/register
POST /api/auth/login
GET /api/auth/me
GraphQL
POST /graphql
Setup & Installation
Prerequisites
- .NET 7 SDK
- Node.js v18+
- PostgreSQL
- (Optional) Docker & Docker Compose
Clone & Configure
git clone https://github.com/your-username/scandevjobs.git
cd scandevjobs
cp .env.example .env
# Update DB and JWT secrets in .env
Database Migration & Seed
dotnet ef database update
dotnet run --project src/ScandevJobs.Api -- seed
Development
docker-compose up --build
npm install --workspace frontend
npm run --workspace frontend dev
dotnet run --project src/ScandevJobs.Api