An app for finding internships and jobs. It scrapes postings from several sources, shows them in one place, and helps you apply with less manual form filling. The frontend is a Flutter app (iOS, Android, Windows), and the backend is a Node.js service that handles scraping, storage, and the API.
This is a personal project and a work in progress.
- Scrapes job and internship postings from multiple sites and shows them together.
- Helps fill out application forms once you pick a listing.
- Node.js backend API for scraping and data storage.
- Single Flutter codebase targeting iOS, Android, and Windows.
.
├── Resume_App__Frontend/ Flutter app
│ ├── pubspec.yaml
│ └── lib/
├── Resume_App__Backend/ Node.js backend
│ ├── package.json
│ └── server/
└── docker-compose.yml Postgres for local development
Requirements:
- Flutter SDK (Dart SDK 3.6.0 or newer)
- Android Studio or Xcode for mobile builds, Windows SDK for Windows builds
Run it:
cd Resume_App__Frontend
flutter pub get
# Android or iOS
flutter run
# Windows
flutter run -d windowsMain dependencies include go_router, provider, shared_preferences,
url_launcher, and flutter_markdown (see pubspec.yaml for the full list).
The backend is a Node.js (Express) service that scrapes postings with axios and
cheerio, schedules jobs with node-cron, and stores data in PostgreSQL via pg.
Requirements:
- Node.js and npm
- PostgreSQL (a
docker-compose.ymlis included to run Postgres locally)
Run it:
# Optional: start Postgres with Docker
docker compose up -d
cd Resume_App__Backend
npm install
npm startConfigure a .env with your database connection and any scraper settings before
starting the server. Scraper helpers are available through npm scripts:
npm run scrape:countries
npm run domains:processMIT. See LICENSE.