{"id":18508183,"url":"https://github.com/rudolphreti/bewerbungmaster","last_synced_at":"2025-05-14T09:30:57.180Z","repository":{"id":256229593,"uuid":"849878863","full_name":"rudolphreti/BewerbungMaster","owner":"rudolphreti","description":"BewerbungMaster is a Blazor web application designed to efficiently create and manage job applications. ","archived":false,"fork":false,"pushed_at":"2024-10-21T09:44:04.000Z","size":2733,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T02:18:25.547Z","etag":null,"topics":["blazor-server","csharp","job-application-management","pdf-generation"],"latest_commit_sha":null,"homepage":"","language":"C#","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/rudolphreti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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-08-30T12:39:01.000Z","updated_at":"2024-10-21T09:44:08.000Z","dependencies_parsed_at":"2024-09-17T19:32:10.404Z","dependency_job_id":"26184059-1454-4702-96ba-ec10db8399de","html_url":"https://github.com/rudolphreti/BewerbungMaster","commit_stats":null,"previous_names":["rudolphreti/bewerbungmaster"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudolphreti%2FBewerbungMaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudolphreti%2FBewerbungMaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudolphreti%2FBewerbungMaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rudolphreti%2FBewerbungMaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rudolphreti","download_url":"https://codeload.github.com/rudolphreti/BewerbungMaster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254112182,"owners_count":22016710,"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","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":["blazor-server","csharp","job-application-management","pdf-generation"],"created_at":"2024-11-06T15:13:39.023Z","updated_at":"2025-05-14T09:30:57.126Z","avatar_url":"https://github.com/rudolphreti.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BewerbungMaster\n\nBewerbungMaster is a Blazor application designed to efficiently create and manage job applications. \n\n![screenshot](screens/screen.png)\n\n## Features\n- Job application files generation (CVs, cover letters) from JSON data:\n![screenshot](screens/screen2.png)\n![screenshot](screens/screen3.png)\n- Adding, editing and deleting entries\n- Selecting the type of position and, depending on that, generating the appropriate cover letter\n- Moving entries to the top and the end of the list\n- Copying a job application folder path to the clipboard\n- Copying a message to an employer to the clipboard\n- Copying a cover letter to the clipboard\n\n## To-Do\n- adding entries manually\n- unit tests\n- integration tests eg. with Selenium\n- isolate dependency injection logic \n- check if I/O operations are asynchronous \n- check for error handling\n- check for performance\n- check for security\n- add XML documentation comments \n- add toast notification\n\n## Key Components and Architecture\n### wwwroot Directory\n- `JobAppDocs/`: Stores generated job application documents\n- `Users/`: Contains user-specific document templates\n- `data.json`: Stores job application data in JSON format\n\n### Services\nThe `Services` directory contains the core business logic of the application:\n- `FileManagementService.cs` and `FileManagementServiceStatic.cs`: File operations for job application documents\n- `JsonService.cs`: Operations on the data.json and user.json files\n- `PdfGenerationService.cs`: Generates PDF documents for job applications\n- `ApplicationInitializationService.cs`: Methods running at startup, such as generating job application documents from json files\n\n#### PdfGenerationService.cs\nThis service is responsible for generating PDF documents for job applications. It utilizes the iText7 library to create professional-looking PDFs with advanced features:\n\n1. **iText7 Integration**: The service leverages iText7, a powerful PDF manipulation library, to create and modify PDF documents programmatically.\n\n2. **Hyperlink Detection**: The service includes functionality to automatically detect URLs within the text content. When a URL is identified, it's converted into an active hyperlink in the generated PDF, enhancing the interactivity of the document.\n\n3. **Syllable Hyphenation**: To improve the readability and layout of the generated PDFs, the service implements syllable hyphenation. This feature intelligently breaks words at appropriate syllable boundaries when necessary, ensuring a clean and professional appearance of the text, especially in narrow columns or justified text alignments.\n\n4. **Dynamic Content Placement**: The service can dynamically position text, images, and other elements within the PDF, allowing for flexible and customizable document layouts.\n\n5. **Font Management**: It handles various font styles and sizes, enabling rich text formatting in the generated PDFs.\n\nThese advanced features of the PdfGenerationService.cs contribute to creating polished, professional-looking job application documents that stand out to potential employers.\n\n## Installation\n\nCurrently, only the source code is available. To set up the project:\n\n1. Clone the repository\n2. Open the solution in Visual Studio or your preferred IDE\n3. Restore NuGet packages\n4. Build the project\n\n## Usage\n\n1. Provide job data in the `data.json` file located in the `wwwroot/default` directory. Include the following information for each job application:\n   - Id\n   - URL\n   - Position\n   - Company\n\nThe `Crawlers` directory contains sample crawlers for extracting this data written in Python/Selenium. You need to have a chrome webdriver version, which is compatible with your Chrome-Browser: https://googlechromelabs.github.io/chrome-for-testing/\n\n2. You can create your own documents in the `Users` directory within `wwwroot`. Make sure to indicate this directory in the `appsetings.Development.json` file.\n\n3. Run the application and use the interface to manage your job applications and generate documents.\n\n## Dependencies\n\nThis project uses the following main dependencies:\n\n- .NET 8.0, C# 12\n- itext7 (v8.0.5)\n- itext7.bouncy-castle-adapter (v8.0.5) - doesn't work without it\n- itext7.commons (v8.0.5)\n- itext7.hyph (v8.0.5)\n\nFor a complete list of dependencies, please refer to the `BewerbungMasterApp.csproj` file.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Support\n\nIf you encounter any problems or have any questions, please open an issue in the GitHub repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frudolphreti%2Fbewerbungmaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frudolphreti%2Fbewerbungmaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frudolphreti%2Fbewerbungmaster/lists"}