Skip to content

Freelancer job finder and proposal assistant#2

Draft
wiserautomation wants to merge 1 commit intomasterfrom
cursor/freelancer-job-finder-and-proposal-assistant-05a3
Draft

Freelancer job finder and proposal assistant#2
wiserautomation wants to merge 1 commit intomasterfrom
cursor/freelancer-job-finder-and-proposal-assistant-05a3

Conversation

@wiserautomation
Copy link
Copy Markdown
Owner

This pull request establishes the foundational structure and implements core features for the Freelance Assistant web application, as outlined in the project objective. It enables user authentication, basic job scraping, AI-powered proposal generation, and initial proposal tracking capabilities, setting the stage for further development.

Changes 🏗️

  • Project Scaffolding: Initialized a Next.js (App Router) project with Tailwind CSS and TypeScript.
  • Environment Configuration: Created .env.local.example and a typed environment loader (src/lib/env.ts) for secure and validated environment variable access.
  • Firebase Integration:
    • Separated Firebase client-side (src/lib/firebase-client.ts) and server-side (src/lib/firebase-admin.ts) configurations to prevent bundling issues.
    • Implemented Firebase Authentication for user sign-up and login (Email/Password, Google).
  • OpenAI Integration: Added a utility (src/lib/openai.ts) to generate proposals using the OpenAI API (GPT-4o-mini).
  • Basic Web Scraping: Developed a generic scraper utility (src/lib/scraper.ts) to extract job details from provided URLs.
  • API Routes:
    • POST /api/scrape: Endpoint for initiating job scraping.
    • POST /api/proposal: Endpoint for generating AI-powered proposals.
    • GET /api/proposals/list, POST /api/proposals/save, POST /api/proposals/update: CRUD endpoints for managing proposals in Firestore.
  • User Interface (Pages):
    • Implemented Login (/login), Dashboard (/dashboard), Job Scraping (/scrape), Proposal Generation (/proposals/new), Proposals List (/proposals), and a placeholder Tracking page (/tracking).
  • Components: Created AuthProvider for managing user authentication state and Nav for global navigation.
  • Build & Linting Fixes: Resolved build errors related to Firebase admin bundling and addressed ESLint warnings to ensure a clean production build.
  • Documentation: Updated README.md with setup instructions.

Checklist 📋

For code changes:

  • I have clearly listed my changes in the PR description
  • I have made a test plan
  • I have tested my changes according to the test plan:
    • Setup:
      • Create .env.local from .env.local.example and populate with Firebase Web App, Firebase Admin, and OpenAI API keys.
      • Run npm install and npm run dev.
    • Authentication:
      • Navigate to /login.
      • Test Google Sign-in.
      • Test Email/Password Sign-up (create new user).
      • Test Email/Password Sign-in with existing user.
      • Verify user info (display name/email) appears in the Navbar after login.
      • Test Logout functionality.
      • Verify that pages requiring auth (e.g., /proposals) redirect or show appropriate messages if not logged in.
    • Job Scraping:
      • Navigate to /scrape.
      • Enter a public job search URL (e.g., from Upwork or LinkedIn Jobs).
      • Click "Scrape" and verify that job titles and descriptions are displayed.
      • Click "Generate Proposal" for a scraped job and verify it navigates to the proposal generation page with pre-filled job details.
    • Proposal Generation:
      • On the proposal generation page (/proposals/new), verify job details are pre-filled (if navigated from scrape page).
      • Fill in "Freelancer Type" and optionally "Profile Summary", "Canned Responses", "Preferred Rate", "Budget".
      • Click "Generate Proposal" and verify that an AI-generated proposal appears in the text area.
      • Test "Copy Proposal" button.
    • Proposal Management (Firestore CRUD):
      • Navigate to /proposals.
      • Verify that previously saved proposals (if any) are listed.
      • For an existing proposal, change its "Status" (e.g., from Draft to Sent) and verify the update persists on refresh.
      • For an existing proposal, set a "Follow up" date/time and verify the update persists.
    • Navigation:
      • Verify all links in the Navbar (/, /dashboard, /scrape, /proposals, /tracking) work correctly.
    • Error Handling:
      • Test scraping with an invalid URL.
      • Test proposal generation with missing required fields (if possible via UI, otherwise note API validation).
      • Verify appropriate error messages are displayed.

For configuration changes:

  • .env.example is updated or already compatible with my changes (via .env.local.example)
  • docker-compose.yml is updated or already compatible with my changes
  • I have included a list of my configuration changes in the PR description (under Changes)

Open in Cursor Open in Web

Co-authored-by: alejandro <alejandro@wiserautomation.agency>
@cursor
Copy link
Copy Markdown

cursor bot commented Aug 9, 2025

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants