{"id":23031878,"url":"https://github.com/maciekmalachowski/cvwizard","last_synced_at":"2026-04-11T01:06:09.029Z","repository":{"id":266638886,"uuid":"894011652","full_name":"maciekmalachowski/CVWizard","owner":"maciekmalachowski","description":"🧙‍♂️AI-powered tool to optimize your CV with job-specific keywords and align it to your dream job.","archived":false,"fork":false,"pushed_at":"2025-03-05T09:17:13.000Z","size":3829,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T21:42:24.612Z","etag":null,"topics":["ai-powered","beautifulsoup","docling","flask","javascript","llama-index","openai","python","rag","react-vite","resume","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maciekmalachowski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-25T15:41:39.000Z","updated_at":"2025-03-12T13:26:18.000Z","dependencies_parsed_at":"2024-12-05T10:25:34.707Z","dependency_job_id":"705a2431-2092-4a73-a8b1-e250fea1fd2c","html_url":"https://github.com/maciekmalachowski/CVWizard","commit_stats":null,"previous_names":["maciekmalachowski/cvwizard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/maciekmalachowski/CVWizard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maciekmalachowski%2FCVWizard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maciekmalachowski%2FCVWizard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maciekmalachowski%2FCVWizard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maciekmalachowski%2FCVWizard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maciekmalachowski","download_url":"https://codeload.github.com/maciekmalachowski/CVWizard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maciekmalachowski%2FCVWizard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272303783,"owners_count":24910448,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-27T02:00:09.397Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-powered","beautifulsoup","docling","flask","javascript","llama-index","openai","python","rag","react-vite","resume","tailwindcss","typescript"],"created_at":"2024-12-15T15:47:38.587Z","updated_at":"2026-04-11T01:06:08.978Z","avatar_url":"https://github.com/maciekmalachowski.png","language":"TypeScript","readme":" \u003cp align=\"center\"\u003e\r\n    \u003cimg src=\"frontend/public/wizard.png\" align=\"center\" width=\"20%\"\u003e\r\n\u003c/p\u003e\r\n\u003cp align=\"center\"\u003e\u003ch1 align=\"center\"\u003eCVWIZARD\u003c/h1\u003e\u003c/p\u003e\r\n\u003cp align=\"center\"\u003e\r\n\t\u003cem\u003eCraft Your CV, Unlock Your Career Potential\u003c/em\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003eBuilt with the tools and technologies:\u003c/p\u003e\r\n\u003cp align=\"center\"\u003e\r\n\t\u003cimg src=\"https://img.shields.io/badge/ChatGPT-74aa9c?style=for-the-badge\u0026logo=openai\u0026logoColor=white\" alt=\"Openai\"\u003e\r\n\t\u003cimg src=\"https://img.shields.io/badge/Python-3776AB.svg?style=for-the-badge\u0026logo=Python\u0026logoColor=white\" alt=\"Python\"\u003e\r\n\t\u003cimg src=\"https://img.shields.io/badge/Flask-000000.svg?style=for-the-badge\u0026logo=Flask\u0026logoColor=white\" alt=\"Flask\"\u003e\r\n  \u003cbr\u003e\r\n\t\u003cimg src=\"https://img.shields.io/badge/React-%2320232a.svg?style=for-the-badge\u0026logo=react\u0026logoColor=%2361DAFB\" alt=\"React\"\u003e\r\n  \t\u003cimg src=\"https://img.shields.io/badge/JavaScript-F7DF1E.svg?style=for-the-badge\u0026logo=JavaScript\u0026logoColor=black\" alt=\"JavaScript\"\u003e\r\n\t\u003cimg src=\"https://img.shields.io/badge/TypeScript-3178C6.svg?style=for-the-badge\u0026logo=TypeScript\u0026logoColor=white\" alt=\"TypeScript\"\u003e\r\n\t\u003cimg src=\"https://img.shields.io/badge/Tailwind%20CSS-%2338B2AC.svg?style=for-the-badge\u0026logo=tailwind-css\u0026logoColor=white\" alt=\"Tailwind\"\u003e\r\n\r\n\u003c/p\u003e\r\n\u003cbr\u003e\r\n\r\n## 🔗 Table of Contents\r\n\r\n- [📍 Overview](#-overview)\r\n- [👾 Features](#-features)\r\n- [📁 Project Structure](#-project-structure)\r\n  - [📂 Project Index](#-project-index)\r\n- [🚀 Getting Started](#-getting-started)\r\n  - [☑️ Prerequisites](#-prerequisites)\r\n  - [⚙️ Installation](#-installation)\r\n  - [🤖 Usage](#🤖-usage)\r\n- [🎗 License](#-license)\r\n\r\n---\r\n\r\n## 📍 Overview\r\n\r\nCVWizard is an innovative web application designed to enhance job application success by aligning CVs with specific job descriptions. Utilizing AI-driven analysis, it extracts and compares skills from uploaded CVs against job requirements, offering tailored advice for optimization. Ideal for job seekers aiming to boost their marketability, CVWizard simplifies the process of tailoring resumes to meet targeted job criteria effectively.\r\n\r\n\u003cp align=\"center\"\u003e\u003cimg src=\"media/usage.gif\"\u003e\u003c/p\u003e\r\n\r\n---\r\n\r\n## 👾 Features\r\n\r\n|      | Feature        | Summary       |\r\n| :--- | :---:         | :---          |\r\n| ⚙️  | **Architecture**  | \u003cul\u003e\u003cli\u003eModern **client-server architecture** with clear separation of frontend and backend responsibilities.\u003c/li\u003e\u003cli\u003eBackend powered by `\u003cPython\u003e` and `\u003cFlask\u003e` for API services, CV processing, and AI insights generation.\u003c/li\u003e\u003cli\u003eFrontend built using `\u003cReact\u003e`, `\u003cTypeScript\u003e`, and `\u003cTailwindCSS\u003e` for dynamic and responsive user interfaces.\u003c/li\u003e\u003c/ul\u003e |\r\n| 🤖 | **AI-Powered Insights** | \u003cul\u003e\u003cli\u003eUtilizes **OpenAI** (`gpt-4-turbo`) model via `\u003cLlamaIndex\u003e` to extract **key skills, languages**, and generate **CV summary**.\u003c/li\u003e\u003cli\u003eEmbeds CV data with **OpenAI Embeddings** (`text-embedding-3-large`) for enhanced semantic search and comparison.\u003c/li\u003e\u003cli\u003eAutomatically matches **CV data** against job requirements and generates **AI-powered improvement suggestions**.\u003c/li\u003e\u003c/ul\u003e |\r\n| 📄 | **CV Processing**  | \u003cul\u003e\u003cli\u003eCV content extracted using `\u003cDocling\u003e` library for **PDF text parsing and segmentation**.\u003c/li\u003e\u003cli\u003eCV data embedded with **OpenAI** to enable semantic search queries.\u003c/li\u003e\u003cli\u003eExtracts **key skills, languages**, and **experience summary** from CV text.\u003c/li\u003e\u003c/ul\u003e |\r\n| 🔩 | **Code Quality**  | \u003cul\u003e\u003cli\u003eFrontend developed with `\u003cTypeScript\u003e` for enhanced type safety and maintainability.\u003c/li\u003e\u003cli\u003eLinting and formatting enforced using `\u003cESLint\u003e` and `\u003cPrettier\u003e` with best practices for React.\u003c/li\u003e\u003cli\u003eBackend follows **modular design patterns**, making code easy to extend and maintain.\u003c/li\u003e\u003c/ul\u003e |\r\n| 🔌 | **Integrations**  | \u003cul\u003e\u003cli\u003eSeamlessly integrates with **OpenAI API** for embeddings and language model-based insights.\u003c/li\u003e\u003cli\u003eJob data extracted via **web scraping** using `\u003cBeautifulSoup\u003e`.\u003c/li\u003e\u003cli\u003eFrontend API communication handled with `\u003cAxios\u003e` for HTTP requests.\u003c/li\u003e\u003cli\u003eBuilt and optimized with `\u003cVite\u003e` for fast and lightweight frontend performance.\u003c/li\u003e\u003c/ul\u003e |\r\n| 🧩 | **Modularity**    | \u003cul\u003e\u003cli\u003eBackend code organized into **independent modules**: `\u003ccv_reader\u003e`, `\u003cscrapper\u003e`, and `\u003cai_insights\u003e`.\u003c/li\u003e\u003cli\u003eFrontend components are **reusable and isolated**, including `\u003cAnalysisResults\u003e` and `\u003cLoadingState\u003e`.\u003c/li\u003e\u003cli\u003eBusiness logic and UI layers are strictly separated for **clean architecture**.\u003c/li\u003e\u003c/ul\u003e |\r\n| 🔍 | **Job-CV Matching** | \u003cul\u003e\u003cli\u003eAutomatically identifies **matched and missing keywords** between job descriptions and CVs.\u003c/li\u003e\u003cli\u003eProvides **AI-generated suggestions** to improve CV alignment with job requirements.\u003c/li\u003e\u003cli\u003eVisualizes CV-job alignment score with an **interactive radial chart**.\u003c/li\u003e\u003c/ul\u003e |\r\n| 🌐 | **Cross-Origin Support** | \u003cul\u003e\u003cli\u003eBackend secured with **CORS policy** to allow cross-origin API requests from frontend clients.\u003c/li\u003e\u003cli\u003eBackend supports **JSON-based API responses** for seamless data exchange.\u003c/li\u003e\u003c/ul\u003e |\r\n\r\n---\r\n\r\n## 📁 Project Structure\r\n\r\n```sh\r\n└── CVWizard/\r\n    ├── LICENSE\r\n    ├── README.md\r\n    ├── backend\r\n    │   ├── ai_insights.py\r\n    │   ├── app.py\r\n    │   ├── cv_reader.py\r\n    │   └── scrapper.py\r\n    ├── frontend\r\n    │   ├── .gitignore\r\n    │   ├── README.md\r\n    │   ├── eslint.config.js\r\n    │   ├── index.html\r\n    │   ├── package-lock.json\r\n    │   ├── package.json\r\n    │   ├── postcss.config.js\r\n    │   ├── public\r\n    │   │   └── wizard.png\r\n    │   ├── src\r\n    │   │   ├── App.tsx\r\n    │   │   ├── components\r\n    │   │   │   ├── AnalysisResults.tsx\r\n    │   │   │   └── LoadingState.tsx\r\n    │   │   ├── index.css\r\n    │   │   ├── main.tsx\r\n    │   │   ├── services\r\n    │   │   │   └── api.ts\r\n    │   │   └── vite-env.d.ts\r\n    │   ├── tailwind.config.js\r\n    │   ├── tsconfig.app.json\r\n    │   ├── tsconfig.json\r\n    │   ├── tsconfig.node.json\r\n    │   └── vite.config.ts\r\n    └── requirements.txt\r\n```\r\n\r\n### 📂 Project Index\r\n\u003cdetails open\u003e\r\n\t\u003csummary\u003e\u003cb\u003e\u003ccode\u003eCVWIZARD/\u003c/code\u003e\u003c/b\u003e\u003c/summary\u003e\r\n\t\u003cdetails\u003e \u003c!-- __root__ Submodule --\u003e\r\n\t\t\u003csummary\u003e\u003cb\u003e__root__\u003c/b\u003e\u003c/summary\u003e\r\n\t\t\u003cblockquote\u003e\r\n\t\t\t\u003ctable\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/requirements.txt'\u003erequirements.txt\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Manages the dependencies essential for the project's operation, ensuring compatibility and functionality across various modules\u003cbr\u003e- It includes libraries for web framework capabilities, cross-origin resource sharing, and specialized tools for indexing and experimental features related to llama data processing\u003cbr\u003e- This setup is crucial for maintaining the project's architecture and facilitating future enhancements or integrations.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003c/table\u003e\r\n\t\t\u003c/blockquote\u003e\r\n\t\u003c/details\u003e\r\n\t\u003cdetails\u003e \u003c!-- backend Submodule --\u003e\r\n\t\t\u003csummary\u003e\u003cb\u003ebackend\u003c/b\u003e\u003c/summary\u003e\r\n\t\t\u003cblockquote\u003e\r\n\t\t\t\u003ctable\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/backend/app.py'\u003eapp.py\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Backend/app.py serves as the server-side interface for a web application, handling file uploads, data extraction, and AI-driven analysis\u003cbr\u003e- It processes uploaded CVs, extracts relevant information, scrapes job data from URLs, and generates insights by comparing CVs with job descriptions, facilitating a comprehensive interaction between the frontend and backend components.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/backend/scrapper.py'\u003escrapper.py\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Scrapes and structures job-related data from specified URLs using BeautifulSoup and requests libraries in Python\u003cbr\u003e- It extracts job titles, required skills, and detailed descriptions from web pages, normalizes text spacing, and handles potential errors during the scraping process, returning structured job data or error information as needed.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/backend/ai_insights.py'\u003eai_insights.py\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Generates AI-powered insights for tailoring CVs to specific job descriptions by comparing candidate skills with job requirements\u003cbr\u003e- It utilizes an AI model to provide structured feedback, highlighting key areas for improvement and suggesting ways to enhance CV alignment with job skills, ultimately offering personalized advice to candidates.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/backend/cv_reader.py'\u003ecv_reader.py\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Processes and indexes curriculum vitae (CV) data by leveraging a document reader, a Markdown parser, and an OpenAI embedding model\u003cbr\u003e- It extracts structured information such as skills, languages, and professional summaries from the indexed data, outputting the results in a structured JSON format.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003c/table\u003e\r\n\t\t\u003c/blockquote\u003e\r\n\t\u003c/details\u003e\r\n\t\u003cdetails\u003e \u003c!-- frontend Submodule --\u003e\r\n\t\t\u003csummary\u003e\u003cb\u003efrontend\u003c/b\u003e\u003c/summary\u003e\r\n\t\t\u003cblockquote\u003e\r\n\t\t\t\u003ctable\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/postcss.config.js'\u003epostcss.config.js\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Configures PostCSS to use TailwindCSS and Autoprefixer plugins, enhancing the CSS build process for the frontend\u003cbr\u003e- TailwindCSS facilitates utility-first styling, while Autoprefixer ensures CSS compatibility across different browsers\u003cbr\u003e- This setup is crucial for maintaining a streamlined, responsive design across the project's frontend architecture.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/tsconfig.node.json'\u003etsconfig.node.json\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Configures TypeScript compiler options for the frontend's node environment, focusing on modern JavaScript standards and strict type-checking to enhance code quality and maintainability\u003cbr\u003e- It specifically targets the setup for the Vite configuration file, ensuring efficient module resolution and error management during development without outputting compiled files.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/package-lock.json'\u003epackage-lock.json\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- The `package-lock.json` file located in the `frontend` directory plays a crucial role in the overall architecture of the project by ensuring consistent installations and version control of the frontend dependencies\u003cbr\u003e- This file lists specific versions of libraries such as React, Axios, and other UI-related packages that are essential for the frontend application's functionality\u003cbr\u003e- By locking down these versions, the file prevents discrepancies between development environments and ensures that all developers and deployment pipelines use the exact same versions of each package, thereby avoiding potential conflicts and bugs that could arise from version mismatches\u003cbr\u003e- This contributes to the stability and reliability of the frontend codebase within the larger project ecosystem.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/tsconfig.json'\u003etsconfig.json\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Manages TypeScript configuration inheritance within the frontend module by referencing specific configurations for application and node environments\u003cbr\u003e- It centralizes TypeScript settings, ensuring consistent compiler behavior across different parts of the frontend development environment, thereby streamlining the build process and maintenance of the codebase.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/tailwind.config.js'\u003etailwind.config.js\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Configures Tailwind CSS for the frontend, specifying which HTML and JavaScript files should utilize Tailwind's utility classes\u003cbr\u003e- It sets up the basic theming structure and declares no additional plugins\u003cbr\u003e- This configuration ensures that the styling framework is optimized for the project's specific frontend architecture, enhancing UI consistency and performance.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/tsconfig.app.json'\u003etsconfig.app.json\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Configures TypeScript compiler options for the frontend application, targeting modern JavaScript features and optimizing for React JSX\u003cbr\u003e- It enhances code quality and maintainability by enforcing strict type-checking and linting rules\u003cbr\u003e- The configuration also improves build performance by utilizing module resolution suited for bundlers and excluding code generation.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/package.json'\u003epackage.json\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Serves as the configuration backbone for the frontend module of the project, specifying dependencies and scripts essential for development, building, and testing\u003cbr\u003e- It supports the React framework integration, ensuring tools like Vite, TypeScript, and ESLint are configured for efficient workflow and code quality management in the frontend development environment.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/vite.config.ts'\u003evite.config.ts\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Defines the configuration for the Vite build tool within the frontend architecture, specifically integrating React support through plugins\u003cbr\u003e- This setup enhances the development environment by enabling features like fast refresh and optimized build times, crucial for efficient frontend development and deployment in the project's broader ecosystem.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/index.html'\u003eindex.html\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Serves as the entry point for the CV Wizard web application, establishing the foundational HTML structure and linking essential resources\u003cbr\u003e- It sets up the viewport settings, specifies character encoding, and integrates the main TypeScript application file to activate the user interface components within the designated root element.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003ctr\u003e\r\n\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/eslint.config.js'\u003eeslint.config.js\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\u003ctd\u003e- Configures ESLint for the frontend directory, focusing on TypeScript and React standards\u003cbr\u003e- It integrates specific plugins for React hooks and refresh patterns, setting up recommended rules and ignoring compiled output\u003cbr\u003e- The configuration ensures code adheres to best practices for a modern JavaScript and TypeScript environment, enhancing maintainability and developer productivity across the project.\u003c/td\u003e\r\n\t\t\t\u003c/tr\u003e\r\n\t\t\t\u003c/table\u003e\r\n\t\t\t\u003cdetails\u003e\r\n\t\t\t\t\u003csummary\u003e\u003cb\u003esrc\u003c/b\u003e\u003c/summary\u003e\r\n\t\t\t\t\u003cblockquote\u003e\r\n\t\t\t\t\t\u003ctable\u003e\r\n\t\t\t\t\t\u003ctr\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/src/main.tsx'\u003emain.tsx\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e- Initializes the React application by setting up the root component within a strict mode context\u003cbr\u003e- It imports essential styles and the main application component from 'App', then mounts it to the DOM, ensuring a structured and error-checked environment for the app's frontend development.\u003c/td\u003e\r\n\t\t\t\t\t\u003c/tr\u003e\r\n\t\t\t\t\t\u003ctr\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/src/index.css'\u003eindex.css\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e- Integrates Tailwind CSS into the frontend architecture, enabling the application of utility-first styling across the web interface\u003cbr\u003e- By including base, components, and utilities directives, it ensures a consistent design system that enhances UI development speed and maintenance within the project's frontend framework\u003cbr\u003e- This setup is crucial for scalable and efficient style management.\u003c/td\u003e\r\n\t\t\t\t\t\u003c/tr\u003e\r\n\t\t\t\t\t\u003ctr\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/src/App.tsx'\u003eApp.tsx\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e- Frontend/src/App.tsx serves as the user interface for CVWizard, enabling users to upload their CVs, input job URLs, and utilize AI-driven analysis to tailor their CVs for specific job opportunities\u003cbr\u003e- It manages user interactions, data input, and displays analysis results, integrating seamlessly with backend services for data processing and insight generation.\u003c/td\u003e\r\n\t\t\t\t\t\u003c/tr\u003e\r\n\t\t\t\t\t\u003ctr\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/src/vite-env.d.ts'\u003evite-env.d.ts\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\t\t\u003ctd\u003e- Frontend/src/vite-env.d.ts serves as a TypeScript declaration file that integrates Vite-specific types into the project's development environment\u003cbr\u003e- By referencing Vite's client types, it ensures that the development tools recognize and correctly handle Vite's features, enhancing the efficiency and reliability of the frontend development process within the broader codebase architecture.\u003c/td\u003e\r\n\t\t\t\t\t\u003c/tr\u003e\r\n\t\t\t\t\t\u003c/table\u003e\r\n\t\t\t\t\t\u003cdetails\u003e\r\n\t\t\t\t\t\t\u003csummary\u003e\u003cb\u003ecomponents\u003c/b\u003e\u003c/summary\u003e\r\n\t\t\t\t\t\t\u003cblockquote\u003e\r\n\t\t\t\t\t\t\t\u003ctable\u003e\r\n\t\t\t\t\t\t\t\u003ctr\u003e\r\n\t\t\t\t\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/src/components/AnalysisResults.tsx'\u003eAnalysisResults.tsx\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\t\t\t\t\u003ctd\u003e- AnalysisResults.tsx visualizes AI-generated insights for evaluating CV-job alignment within the frontend of the application\u003cbr\u003e- It displays a radial chart for alignment scores, lists matched and missing keywords, and offers AI-powered suggestions to enhance CV effectiveness, contributing to a user-friendly interface that aids in optimizing job applications.\u003c/td\u003e\r\n\t\t\t\t\t\t\t\u003c/tr\u003e\r\n\t\t\t\t\t\t\t\u003ctr\u003e\r\n\t\t\t\t\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/src/components/LoadingState.tsx'\u003eLoadingState.tsx\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\t\t\t\t\u003ctd\u003e- Provides a visual feedback component for asynchronous operations within the application's frontend\u003cbr\u003e- It displays an animated spinner, a dynamic progress percentage, and a progress bar to indicate the status of ongoing processes, such as AI computations on user-uploaded CVs, enhancing user experience by communicating operation progress clearly.\u003c/td\u003e\r\n\t\t\t\t\t\t\t\u003c/tr\u003e\r\n\t\t\t\t\t\t\t\u003c/table\u003e\r\n\t\t\t\t\t\t\u003c/blockquote\u003e\r\n\t\t\t\t\t\u003c/details\u003e\r\n\t\t\t\t\t\u003cdetails\u003e\r\n\t\t\t\t\t\t\u003csummary\u003e\u003cb\u003eservices\u003c/b\u003e\u003c/summary\u003e\r\n\t\t\t\t\t\t\u003cblockquote\u003e\r\n\t\t\t\t\t\t\t\u003ctable\u003e\r\n\t\t\t\t\t\t\t\u003ctr\u003e\r\n\t\t\t\t\t\t\t\t\u003ctd\u003e\u003cb\u003e\u003ca href='https://github.com/maciekmalachowski/CVWizard/blob/master/frontend/src/services/api.ts'\u003eapi.ts\u003c/a\u003e\u003c/b\u003e\u003c/td\u003e\r\n\t\t\t\t\t\t\t\t\u003ctd\u003e- Manages interactions with the backend API for a web application, facilitating the upload of CVs, retrieval of job descriptions, and generation of AI-driven insights by posting data to specific endpoints\u003cbr\u003e- It handles data transmission securely and manages errors effectively, ensuring robust communication between the frontend and server.\u003c/td\u003e\r\n\t\t\t\t\t\t\t\u003c/tr\u003e\r\n\t\t\t\t\t\t\t\u003c/table\u003e\r\n\t\t\t\t\t\t\u003c/blockquote\u003e\r\n\t\t\t\t\t\u003c/details\u003e\r\n\t\t\t\t\u003c/blockquote\u003e\r\n\t\t\t\u003c/details\u003e\r\n\t\t\u003c/blockquote\u003e\r\n\t\u003c/details\u003e\r\n\u003c/details\u003e\r\n\r\n---\r\n## 🚀 Getting Started\r\n\r\n### ☑️ Prerequisites\r\n\r\nBefore getting started with **CV Wizard**, ensure your runtime environment meets the following requirements:\r\n\r\n- **Backend:**\r\n  - Python `^3.10`\r\n  - **Pip** for dependency management\r\n  \r\n- **Frontend:**\r\n  - Node.js `^18.x`\r\n  - **npm** or **yarn** as a package manager\r\n  - Modern browser for running the app\r\n  \r\n### ⚙️ Installation\r\n\r\nInstall CVWizard using one of the following methods:\r\n\r\n**Build from source:**\r\n\r\n1. Clone the CVWizard repository:\r\n```sh\r\ngit clone https://github.com/maciekmalachowski/CVWizard\r\n```\r\n\r\n2. Navigate to the project directory:\r\n```sh\r\ncd CVWizard\r\n```\r\n\r\n3. Install Backend Dependencies:\r\n```sh\r\ncd backend\r\npip install -r requirements.txt\r\n```\r\n\r\nCreate a `.env` file in the *backend/* folder with the following **OpenAI API** key:\r\n```sh\r\nOPENAI_API_KEY=your_api_key_here\r\n```\r\n\r\n3. Install Frontend Dependencies:\r\n```sh\r\ncd frontend\r\nnpm install\r\n```\r\n\r\n\r\n\r\n### 🤖 Usage\r\n\r\n**Run Backend:**\r\n\r\nNavigate to the backend folder and start the Flask server:\r\n```sh\r\ncd backend\r\nflask run\r\n```\r\n\r\nBackend will run on `http://localhost:5000` with *Flask-CORS* enabled to match requests from the frontend.\r\n\r\n**Run Frontend:**\r\n\r\nOpen a new terminal window and start the frontend:\r\n```sh\r\ncd frontend\r\nnpm run dev\r\n```\r\n\r\nFrontend will run on `http://localhost:5173`.\r\n\r\n## 🔧 API Endpoints\r\n\r\n| Method | Endpoint           | Description                                    |\r\n|--------|------------------|-----------------------------------------------|\r\n| POST   | `/read-cv`       | Upload and process CV                         |\r\n| POST   | `/get-job-data`   | Scrape job description from URL              |\r\n| POST   | `/get-ai-insights` | Generate AI insights comparing CV and job requirements |\r\n\r\n\r\n## 🎗 License\r\n\r\nThis project is protected under the [MIT](https://github.com/maciekmalachowski/CVWizard/blob/main/LICENSE) License.\r\n\r\n---\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaciekmalachowski%2Fcvwizard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaciekmalachowski%2Fcvwizard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaciekmalachowski%2Fcvwizard/lists"}