{"id":20366761,"url":"https://github.com/kapilyadav-dev/kotresume","last_synced_at":"2025-04-12T05:11:42.616Z","repository":{"id":188039972,"uuid":"677805433","full_name":"KapilYadav-dev/KotResume","owner":"KapilYadav-dev","description":"Dynamic KMP based resume.","archived":false,"fork":false,"pushed_at":"2023-09-09T14:42:37.000Z","size":6505,"stargazers_count":28,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T00:41:26.555Z","etag":null,"topics":["compose","compose-multiplatform","compose-wasm","compose-web","kmp","wasm"],"latest_commit_sha":null,"homepage":"https://kapil-resume.netlify.app/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KapilYadav-dev.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-08-12T17:34:22.000Z","updated_at":"2024-10-04T16:48:47.000Z","dependencies_parsed_at":"2024-11-15T00:38:15.245Z","dependency_job_id":null,"html_url":"https://github.com/KapilYadav-dev/KotResume","commit_stats":null,"previous_names":["kapilyadav-dev/kotresume"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KapilYadav-dev%2FKotResume","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KapilYadav-dev%2FKotResume/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KapilYadav-dev%2FKotResume/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KapilYadav-dev%2FKotResume/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KapilYadav-dev","download_url":"https://codeload.github.com/KapilYadav-dev/KotResume/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248519545,"owners_count":21117761,"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":["compose","compose-multiplatform","compose-wasm","compose-web","kmp","wasm"],"created_at":"2024-11-15T00:26:50.024Z","updated_at":"2025-04-12T05:11:42.593Z","avatar_url":"https://github.com/KapilYadav-dev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KotResume\n\nThis is a resume generator website built using Kotlin Multiplatform (KMP) WebAssembly (wasm). The\nwebsite allows users to create their resumes by providing input in JSON format. It offers a variety\nof customization options for text appearance, such as colors, font weights, and styles. The\ngenerated resume can be customized using predefined colors, font weights, and styles.\n\n## Demo\n\n![Image 1](https://raw.githubusercontent.com/KapilYadav-dev/KotResume/main/images/demo.png)\n\n## Features\n\n- Generate personalized resumes using JSON input.\n- Customize text appearance with predefined colors, font weights, and styles.\n- Various components available for structuring the resume:\n    - **BasicTextWidgetConfig**: Represents a basic text element with customizable attributes.\n    - **BulletinTextWidgetConfig**: Creates a bullet-point list with customizable text\n      configurations.\n    - **DividerWidgetConfig**: Adds a horizontal divider with customizable thickness and color.\n    - **MiddleBulletinRowTextWidgetConfig**: Creates a row of text elements with bullet points and\n      customizable configurations.\n    - **RowTextWidgetConfig**: Represents a row of two text elements with customizable\n      configurations.\n    - **SpacerWidgetConfig**: Adds vertical spacing between components.\n\n## Customization Options\n\n### Colors\n\nThe following colors can be used:\n\n- \"black\" -\u003e Color.Black\n- \"white\" -\u003e Color.White\n- \"red\" -\u003e Color.Red\n- \"green\" -\u003e Color.Green\n- \"blue\" -\u003e Color.Blue\n- \"yellow\" -\u003e Color.Yellow\n- \"cyan\" -\u003e Color.Cyan\n- \"magenta\" -\u003e Color.Magenta\n- \"gray\", \"grey\" -\u003e Color.Gray\n- \"lightGray\", \"lightGrey\" -\u003e Color.LightGray\n- \"darkGray\", \"darkGrey\" -\u003e Color.DarkGray\n- \"transparent\" -\u003e Color.Transparent\n- else -\u003e Color.Black\n\n### Font Weights\n\nChoose from the following font weights:\n\n- \"light\", \"thin\" -\u003e FontWeight.Light\n- \"normal\", \"regular\" -\u003e FontWeight.Normal\n- \"medium\" -\u003e FontWeight.Medium\n- \"bold\" -\u003e FontWeight.Bold\n- \"semiBold\" -\u003e FontWeight.SemiBold\n- else -\u003e FontWeight.Normal\n\n### Styles\n\nSelect text styles:\n\n- \"italic\", \"italics\" -\u003e FontStyle.Italic\n- \"normal\" -\u003e FontStyle.Normal\n- else -\u003e FontStyle.Normal\n\n## Components\n\n![Image 1](https://raw.githubusercontent.com/KapilYadav-dev/KotResume/main/images/understanding.png)\n\n### BasicTextWidgetConfig\n\nA basic text element with customizable attributes:\n\n```kotlin\ndata class BasicTextWidgetConfig(\n    val text: String? = null,\n    val url: String? = null,\n    val shouldUnderLineUrl: Boolean? = true,\n    @JsonNames(\"config\",\"textConfig\") val textConfig: TextConfig = TextConfig(),\n    val widgetId: String = Widgets.BasicTextWidgetId.widgetName,\n    val topPadding: Int = 0,\n    val bottomPadding: Int = 0,\n    val startPadding: Int = 0,\n    val endPadding: Int = 0\n) {\n    @kotlinx.serialization.Serializable\n    data class TextConfig(\n        val color: String? = null,\n        val fontWeight: String? = null,\n        val textSize: Int? = null,\n        val fontStyle: String? = null\n    )\n}\n```\n\n- **text**: The text content.\n- **url**: URL associated with the text.\n- **shouldUnderLineUrl**: Whether the URL should be underlined (default: true).\n- **textConfig**: Text configuration containing color in String, font weight in String , text size\n  in Int, and font style in String.\n- **widgetId**: I\"BasicTextWidgetId\"\n- **topPadding**, **bottomPadding**, **startPadding**, **endPadding**: Padding values in int. ( e.g\n  32 i.e 32.dp )\n\n### BulletinTextWidgetConfig\n\nCreates a bullet-point list with customizable text configurations:\n\n- **bulletinText**: The bullet point character (default: \"•\").\n- **textConfigsList**: List of BasicTextWidgetConfig for the bullet points.\n- **widgetId**: \"BulletinTextWidgetId\"\n- **topPadding**, **bottomPadding**, **startPadding**, **endPadding**: Padding values in int. ( e.g\n  32 i.e 32.dp )\n\n### DividerWidgetConfig\n\nAdds a horizontal divider with customizable attributes:\n\n```kotlin\ndata class BulletinTextWidgetConfig(\n    val bulletinText: String = \"•\",\n    @JsonNames(\"textList\",\"list\")val textConfigsList: List\u003cBasicTextWidgetConfig\u003e? = null,\n    val widgetId: String = Widgets.BulletinTextWidgetId.widgetName,\n    val topPadding: Int = 0,\n    val bottomPadding: Int = 0,\n    val startPadding: Int = 32,\n    val endPadding: Int = 0\n)\n```\n\n- **thickness**: The thickness of the divider line.\n- **color**: Color of the divider.\n- **colorAlpha**: Alpha value for the color (default: 1.0).\n- **widgetId**: \"DividerWidgetId\"\n- **topPadding**, **bottomPadding**, **startPadding**, **endPadding**: Padding values in int. ( e.g\n  32 i.e 32.dp )\n\n### MiddleBulletinRowTextWidgetConfig\n\nCreates a row of text elements with bullet points and customizable configurations:\n\n```kotlin\ndata class MiddleBulletinRowTextWidgetConfig(\n    val bulletinText: String = \"•\",\n    @JsonNames(\"firstText\",\"firstTextWidgetConfig\") val firstTextWidgetConfig: BasicTextWidgetConfig? = null,\n    @JsonNames(\"secondText\",\"secondTextWidgetConfig\") val secondTextWidgetConfig: BasicTextWidgetConfig? = null,\n    @JsonNames(\"thirdText\",\"thirdTextWidgetConfig\") val thirdTextWidgetConfig: BasicTextWidgetConfig? = null,\n    @JsonNames(\"fourthText\",\"fourthTextWidgetConfig\") val fourthTextWidgetConfig: BasicTextWidgetConfig? = null,\n    val widgetId: String = Widgets.MiddleBulletinRowTextWidgetId.widgetName,\n    val topPadding: Int = 0,\n    val bottomPadding: Int = 0,\n    val startPadding: Int = 0,\n    val endPadding: Int = 0\n)\n```\n\n- **bulletinText**: The bullet point character (default: \"•\").\n- **firstTextWidgetConfig**, **secondTextWidgetConfig**, **thirdTextWidgetConfig**, **\n  fourthTextWidgetConfig**: BasicTextWidgetConfig for each element.\n- **widgetId**: \"MiddleBulletinRowTextWidgetId\"\n- **topPadding**, **bottomPadding**, **startPadding**, **endPadding**: Padding values in int. ( e.g\n  32 i.e 32.dp )\n\n### RowTextWidgetConfig\n\nRepresents a row of two text elements with customizable configurations:\n\n```kotlin\ndata class RowTextWidgetConfig(\n    @JsonNames(\"firstText\",\"firstTextWidgetConfig\") val firstTextWidgetConfig: BasicTextWidgetConfig? = null,\n    @JsonNames(\"secondText\",\"secondTextWidgetConfig\") val secondTextWidgetConfig: BasicTextWidgetConfig? = null,\n    val widgetId: String = Widgets.RowTextWidgetId.widgetName,\n    val topPadding: Int = 0,\n    val bottomPadding: Int = 0,\n    val startPadding: Int = 0,\n    val endPadding: Int = 0\n)\n```\n\n- **firstTextWidgetConfig**, **secondTextWidgetConfig**: BasicTextWidgetConfig for each element.\n- **widgetId**: \"RowTextWidgetId\"\n- **topPadding**, **bottomPadding**, **startPadding**, **endPadding**: Padding values in int. ( e.g\n  32 i.e 32.dp )\n\n### SpacerWidgetConfig\n\nAdds vertical spacing between components:\n\n```kotlin\ndata class SpacerWidgetConfig(\n    val space: Int? = null,\n    val widgetId: String = Widgets.SpacerWidgetId.widgetName,\n    val topPadding: Int = 0,\n    val bottomPadding: Int = 0,\n    val startPadding: Int = 0,\n    val endPadding: Int = 0\n)\n```\n\n- **space**: The amount of spacing in int. ( e.g 32 i.e 32.dp )\n- **widgetId**: \"SpacerWidgetId\"\n- **topPadding**, **bottomPadding**, **startPadding**, **endPadding**: Padding values.\n\n## Example Json\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to expand the code for example json\u003c/summary\u003e\n\n```json\n{\n  \"resumeName\": \"KapilYadav-Resume.pdf\",\n  \"resumeUrl\": \"https://d1fdloi71mui9q.cloudfront.net/Pz93R8fISZm11vhLK3Qx_KapilResume.pdf\",\n  \"githubUrl\": \"https://github.com/KapilYadav-dev/KotResume\",\n  \"resumeDataList\": [\n    {\n      \"firstText\": {\n        \"text\": \"Kapil Yadav\",\n        \"config\": {\n          \"color\": \"blue\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"secondText\": {\n        \"text\": \"Email: infokaydev@gmail.com\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"widgetId\": \"RowTextWidgetId\",\n      \"topPadding\": 0,\n      \"bottomPadding\": 0,\n      \"startPadding\": 0,\n      \"endPadding\": 0\n    },\n    {\n      \"firstText\": {\n        \"text\": \"All links here\",\n        \"url\": \"https://linktr.ee/mrkaydev\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"secondText\": {\n        \"text\": \"Mobile: +91-8920701834\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"widgetId\": \"RowTextWidgetId\"\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"text\": \"Education\",\n      \"config\": {\n        \"color\": \"blue\",\n        \"fontWeight\": \"bold\",\n        \"textSize\": 16\n      },\n      \"widgetId\": \"BasicTextWidgetId\"\n    },\n    {\n      \"thickness\": 1,\n      \"color\": \"black\",\n      \"topPadding\": 0,\n      \"widgetId\": \"DividerWidgetId\",\n      \"bottomPadding\": 0,\n      \"startPadding\": 0,\n      \"endPadding\": 0\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"•\",\n      \"firstText\": {\n        \"text\": \"Ajay Kumar Garg Engineering College\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"secondText\": {\n        \"text\": \"Ghaziabad\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"thirdText\": {\n        \"text\": \"Bachelor of Technology in Computer Science Engineering; CGPA: \u003cb\u003e7.4\u003c/b\u003e\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"fourthText\": {\n        \"text\": \"Aug. 2019 – May. 2023\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"space\": 12,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"•\",\n      \"firstText\": {\n        \"text\": \"Rajkiya pratibha vikas vidyalaya\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"secondText\": {\n        \"text\": \"Surajmal vihar, New Delhi\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"thirdText\": {\n        \"text\": \"Class 12th; PERCENTAGE: \u003cb\u003e93.7%\u003c/b\u003e\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14\n        }\n      },\n      \"fourthText\": {\n        \"text\": \"April. 2018 – May. 2019\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"text\": \"Experience\",\n      \"config\": {\n        \"color\": \"blue\",\n        \"fontWeight\": \"bold\",\n        \"textSize\": 16\n      },\n      \"widgetId\": \"BasicTextWidgetId\"\n    },\n    {\n      \"thickness\": 1,\n      \"color\": \"black\",\n      \"topPadding\": 0,\n      \"widgetId\": \"DividerWidgetId\",\n      \"bottomPadding\": 0,\n      \"startPadding\": 0,\n      \"endPadding\": 0\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"•\",\n      \"firstText\": {\n        \"text\": \"Mobile Premier League (MPL)\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"secondText\": {\n        \"text\": \"Bangalore, IN (Remote)\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"thirdText\": {\n        \"text\": \"Android Intern\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"fourthText\": {\n        \"text\": \"April 2023 - Aug\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"list\": [\n        {\n          \"text\": \"improved app startup time from \u003cb\u003e400 ms to 20 ms.\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"Reduced app size around \u003cb\u003e20 Mb\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"Fixed framework crashes and setup Firebase crashlytics around \u003cb\u003e99.7%\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"Added a pre \u003cb\u003egradle task\u003c/b\u003e to check RN asset naming and also reduce webp size using cwebp as a pregradle task to improve storage utilisation.\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"Added \u003cb\u003eRuler by Spotify\u003c/b\u003e as a post task to generate App Size distribution report and automate that to \u003cb\u003eSlack Ci build.\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"worked with \u003cb\u003eMPL internal SDK’s\u003c/b\u003e which are being used in multiple products.\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        }\n      ],\n      \"widgetId\": \"BulletinTextWidgetId\"\n    },\n    {\n      \"space\": 8,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"•\",\n      \"firstText\": {\n        \"text\": \"INDMoney\",\n        \"url\": \"https://drive.google.com/file/d/1IL10x96P53Uyc4Hjqj6Y5eAoYPC7M2xU/view?usp=sharing\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"secondText\": {\n        \"text\": \"Gurugram, IN (Remote)\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"thirdText\": {\n        \"text\": \"Android Intern\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"fourthText\": {\n        \"text\": \"Sept 2022 - March 2023\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"list\": [\n        {\n          \"text\": \"was responsible for the whole \u003cb\u003eMutual funds vertical.\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"was the DRI for implementation of \u003cb\u003eSentry SDK.\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"worked on platform task for improving \u003cb\u003eJanky frames.\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        }\n      ],\n      \"widgetId\": \"BulletinTextWidgetId\"\n    },\n    {\n      \"space\": 8,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"•\",\n      \"firstText\": {\n        \"text\": \"Atom EI\",\n        \"url\": \"https://drive.google.com/file/d/1Cm_g5iXFo9rEiXPYUZXr5GbiKUnjfiXG/view?usp=sharing\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"secondText\": {\n        \"text\": \"Gurugram, IN (Remote)\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 16\n        }\n      },\n      \"thirdText\": {\n        \"text\": \"Android Intern\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"fourthText\": {\n        \"text\": \"June 2022 - Sept 2022\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14,\n          \"fontStyle\": \"italics\"\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"list\": [\n        {\n          \"text\": \"\u003cb\u003eLed Personalized Time feature :\u003c/b\u003e Added a feature in prod release for Personalized meditation time for making flexible meditation for the user. Bug-free in 1st e2e testing itself.\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"\u003cb\u003eImage similarity algorithm :\u003c/b\u003e Worked upon \u003cb\u003ePhash algorithm\u003c/b\u003e which converted to a library in kotlin for internal use so that we can achieve Image similarity stable way with more than \u003cb\u003e85% accuracy.\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"\u003cb\u003eFixed bug on the production line :\u003c/b\u003e Fixed a critical bug which leads to crashing, thus Firebase crashlytics events dropped by \u003cb\u003e90%.\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        }\n      ],\n      \"widgetId\": \"BulletinTextWidgetId\"\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"text\": \"Projects\",\n      \"config\": {\n        \"color\": \"blue\",\n        \"fontWeight\": \"bold\",\n        \"textSize\": 16\n      },\n      \"widgetId\": \"BasicTextWidgetId\"\n    },\n    {\n      \"thickness\": 1,\n      \"color\": \"black\",\n      \"topPadding\": 0,\n      \"widgetId\": \"DividerWidgetId\",\n      \"bottomPadding\": 0,\n      \"startPadding\": 0,\n      \"endPadding\": 0\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"\",\n      \"firstText\": {\n        \"text\": \"1SecMailApp\",\n        \"url\": \"https://github.com/KapilYadav-dev/1SecMail\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"list\": [\n        {\n          \"text\": \"An unofficial app of 1SecMail api. Made with KMP ( \u003cb\u003eMade with Compose Multiplatform )\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"Opensource and quite popular on github.\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"From single codebase it delivers \u003cb\u003eIos, MacOs, Windows, Linux and Android\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        }\n      ],\n      \"widgetId\": \"BulletinTextWidgetId\"\n    },\n    {\n      \"space\": 8,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"\",\n      \"firstText\": {\n        \"text\": \"KotResume (Dynamic KMP based resume)\",\n        \"url\": \"https://github.com/KapilYadav-dev/KotResume\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"bold\",\n          \"textSize\": 16\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"textConfigsList\": [\n        {\n          \"text\": \"This is a resume generator website built using \u003cb\u003eKotlin Multiplatform (KMP) WebAssembly (wasm).\u003c/b\u003e\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"Opensource and quite popular on github.\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        },\n        {\n          \"text\": \"Convert Json to resume in simple steps.\",\n          \"config\": {\n            \"color\": \"black\",\n            \"fontWeight\": \"normal\",\n            \"textSize\": 14\n          }\n        }\n      ],\n      \"widgetId\": \"BulletinTextWidgetId\"\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"text\": \"Skills\",\n      \"config\": {\n        \"color\": \"blue\",\n        \"fontWeight\": \"bold\",\n        \"textSize\": 16\n      },\n      \"widgetId\": \"BasicTextWidgetId\"\n    },\n    {\n      \"thickness\": 1,\n      \"color\": \"black\",\n      \"topPadding\": 0,\n      \"widgetId\": \"DividerWidgetId\",\n      \"bottomPadding\": 0,\n      \"startPadding\": 0,\n      \"endPadding\": 0\n    },\n    {\n      \"space\": 20,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"•\",\n      \"firstText\": {\n        \"text\": \"\u003cb\u003eLanguages:\u003c/b\u003e Java, Kotlin, Python, Javascript\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14\n        }\n      },\n      \"secondText\": {\n        \"text\": \"\u003cb\u003eTechnologies:\u003c/b\u003e AR, Bug testing, IOT, AWS, CI/CD\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"space\": 8,\n      \"widgetId\": \"SpacerWidgetId\"\n    },\n    {\n      \"bulletinText\": \"•\",\n      \"firstText\": {\n        \"text\": \"\u003cb\u003eFrameworks and Tools:\u003c/b\u003e Git, Android, React Native, MS App center, Jenkins, Android Studio, VS Code, Slack,\u003cb\u003e Compose Multiplatform, KMP.\u003c/b\u003e\",\n        \"config\": {\n          \"color\": \"black\",\n          \"fontWeight\": \"normal\",\n          \"textSize\": 14\n        }\n      },\n      \"widgetId\": \"MiddleBulletinRowTextWidgetId\"\n    },\n    {\n      \"space\": 8,\n      \"widgetId\": \"SpacerWidgetId\"\n    }\n  ]\n}\n```\n\n\u003c/details\u003e\n\n## How to make your Resume Website\n\nTo use this resume generator website, follow these steps:\n\n1. Clone the repository.\n2. Open the project using your preferred Kotlin IDE.\n3. Modify the RESUME_JSON_URL url according to your resume content and customization preferences.\n4. Build and run the KMP wasm application.\n5. Upload it to netlify.\n\n## Need easy way ??\n\nVideo tutorial \n\nhttps://youtu.be/Gfb_cKAM298\n\n1. Go to WebsiteCode folder which is in root of this project i.e (./WebsiteCode)\n2. Execute changeUrl.sh using bash scripting. i.e ( bash changeUrl.sh)\n  i) It will ask you to enter JSON_URL for your resume where json is hosted.\n ii) After completion just drag and drop that folder to any static site hosting you want.\n\n## Conclusion\n\nThis KMP wasm-powered website provides an innovative way to create personalized resumes using JSON\ninput. With a range of customization options for text appearance and multiple components to\nstructure the content, it offers a user-friendly and flexible experience for generating impressive\nresumes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkapilyadav-dev%2Fkotresume","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkapilyadav-dev%2Fkotresume","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkapilyadav-dev%2Fkotresume/lists"}