├── .gitignore ├── requirements.txt ├── templates ├── _config.yml_jj2 ├── resume.md_jj2 └── resume.tex_jj2 ├── deploy └── includes │ └── analytics.html ├── .moban.yaml ├── .github └── workflows │ └── create-resume.yml ├── LICENSE ├── README.md └── data.yml /.gitignore: -------------------------------------------------------------------------------- 1 | .moban.hashes 2 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | moban>=0.4.0 2 | -------------------------------------------------------------------------------- /templates/_config.yml_jj2: -------------------------------------------------------------------------------- 1 | title: {{ name }} 2 | description: {{ description }} 3 | show_downloads: false 4 | google_analytics: {{ google_analytics }} 5 | theme: jekyll-theme-slate 6 | -------------------------------------------------------------------------------- /deploy/includes/analytics.html: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /.moban.yaml: -------------------------------------------------------------------------------- 1 | configuration: 2 | configuration: data.yml 3 | template_dir: 4 | - templates 5 | template_types: 6 | latex_type: 7 | base_type: jinja2 8 | file_extensions: 9 | - tex_jj2 10 | options: 11 | block_start_string: '((*' 12 | block_end_string: '*))' 13 | variable_start_string: '(((' 14 | variable_end_string: ')))' 15 | comment_start_string : '((=' 16 | comment_end_string: '=))' 17 | trim_blocks: true 18 | lstrip_blocks: true 19 | 20 | targets: 21 | - deploy/main.tex: templates/resume.tex_jj2 22 | - deploy/README.md: templates/resume.md_jj2 23 | - deploy/_config.yml: templates/_config.yml_jj2 24 | -------------------------------------------------------------------------------- /.github/workflows/create-resume.yml: -------------------------------------------------------------------------------- 1 | name: Create resume 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Repo checkout 12 | uses: actions/checkout@v2 13 | - name: Set up Python 3.6 14 | uses: actions/setup-python@v2 15 | with: 16 | python-version: '3.6' 17 | - name: Install from pip 18 | run: pip install -r requirements.txt 19 | - name: Generate tex file 20 | run: moban 21 | - name: Compile LaTeX document 22 | uses: dante-ev/latex-action@master 23 | with: 24 | root_file: deploy/main.tex 25 | - name: Move pdf to a directory 26 | run: mv main.pdf deploy/main.pdf 27 | - name: Commit to gh-pages 28 | uses: peaceiris/actions-gh-pages@v3 29 | with: 30 | github_token: ${{ secrets.GITHUB_TOKEN }} 31 | publish_dir: ./deploy 32 | enable_jekyll: true 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2020, Ayan Banerjee 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to use, 6 | copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 7 | Software, and to permit persons to whom the Software is furnished to do so, 8 | subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 18 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /templates/resume.md_jj2: -------------------------------------------------------------------------------- 1 | # {{ name }} 2 | 3 | Email: {{ email }} 4 | Address: {{ address }} 5 | [Website]({{website}}) | [LinkedIn]({{linkedin}}) | [GitHub]({{github}}) | [Resume](./main.pdf) 6 | 7 | ## Education 8 | 9 | {% for institute in education %} 10 | - **{{ institute.institute }}** 11 | 12 | _{{ institute.place }}_ 13 | {{ institute.program }}, {{ institute.marks }} 14 | {{ institute.period }} 15 | 16 | {% endfor %} 17 | 18 | ## Experience 19 | 20 | {% for experience in experiences %} 21 | ### {{ experience.position }} 22 | 23 | _{{ experience.place }}_ 24 | {{ experience.company }} 25 | {{ experience.period }} 26 | {% for work in experience.work %} 27 | - {% if work.title %}**{{work.title}}:** {% endif %}{{ work.description }} 28 | {% endfor %} 29 | 30 | {% endfor %} 31 | 32 | ## Projects 33 | 34 | {% for project in projects %} 35 | - [{{project.name}}]({{project.link}}): {{project.work}} 36 | {% endfor %} 37 | 38 | ## Achievements 39 | 40 | {% for achievement in achievements %} 41 | - {{achievement}} 42 | {% endfor %} 43 | 44 | ## Skills 45 | 46 | - **Proficient In**: {{ skills.proficient }} 47 | - **Familiar With**: {{ skills.familiar }} 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Resume Generator Action 2 | 3 | ![Create resume](https://github.com/ayan-b/resume-generator-action/workflows/Create%20resume/badge.svg) 4 | 5 | How about creating a site without touching HTML or creating a LaTeX resume without knowing LaTeX!? Enter [resume-generator-action](github.com/ayan-b/resume-generator-action/)! 6 | 7 | Simply fill in this [`data.yml`](https://github.com/ayan-b/resume-generator-action/blob/master/data.yml) file and your website and resume will be live in GitHub pages. Make sure to [enable GitHub Pages](https://docs.github.com/en/github/working-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site) in your repository. Point the publishing source to `gh-pages`. 8 | 9 | **More Customization**: 10 | 11 | - Change the Jekyll theme in the [`_config.yml_jj2`](./templates/_config.yml_jj2) file for a different look of your site 12 | - Modify the [resume template](./templates/resume.tex_jj2) and [markdown template](./templates/resume.md_jj2) for a different layout of resume and your site respectively 13 | 14 | ## Trivia 15 | 16 | This action was made for [Actions Hackathon](https://ayan-b.github.io/blog/latex-resume-website-github-action/). 17 | 18 | ## License 19 | 20 | MIT 21 | -------------------------------------------------------------------------------- /data.yml: -------------------------------------------------------------------------------- 1 | # Personal 2 | name: Ayan Banerjee 3 | website: https://ayan-b.github.io/ 4 | email: ayanbn7@gmail.com 5 | dob: 01.01.2019 6 | guardian: Lorem Ipsum 7 | address: Lorem Ipsum 8 | mobile: +91 123456789 9 | google_analytics: UA-121107357-1 10 | description: Software Developer 11 | linkedin: https://www.linkedin.com/in/ayanb/ 12 | github: https://www.github.com/ayan-b 13 | 14 | # Education 15 | education: 16 | - institute: National Institute of Technology, Durgapur 17 | place: Durgapur, India 18 | program: B.Tech in Electronics and Communication Engineering 19 | marks: "CGPA: 9.30/10 (till 5th semester)" 20 | period: 2016 - 2020 21 | - institute: Sargachi Ramakrishna Mission High School 22 | place: Sargachi, India 23 | program: Higher Secondary 24 | marks: 96\% 25 | period: 2014 - 2016 26 | - institute: Sargachi Ramakrishna Mission High School 27 | place: Sargachi, India 28 | program: Secondary 29 | marks: 92.43\% 30 | period: 2008 - 2014 31 | 32 | # Experience 33 | experiences: 34 | - company: UCSC Xena 35 | place: Open Source 36 | position: Google Summer of Code student 37 | period: May - August, 2019 38 | work: 39 | - description: Duis aute irure dolor in 40 | - title: Django 41 | description: Excepteur sint occaecat cupidatat non 42 | - description: Duis aute irure dolor in 43 | 44 | - company: Indian Institute of Technology, Bombay 45 | place: Mumbai, India 46 | position: Summer Intern 47 | period: May - June, 2018 48 | work: 49 | - description: Duis aute irure dolor in 50 | - title: Django 51 | description: Excepteur sint occaecat cupidatat non 52 | - description: Duis aute irure dolor in 53 | - description: Excepteur sint occaecat cupidatat non 54 | - title: hello 55 | description: hello mercury venus earth mars jupiter 56 | 57 | # Projects 58 | projects: 59 | - name: Project1 60 | link: https://foo.bar 61 | work: Lorem ipsum dolor sit amet, consectetur adipiscing elit Lorem ipsum dolor Lorem ipsum dolor 62 | - name: Project2 63 | link: https://foo.bar 64 | work: Lorem ipsum dolor sit amet, consectetur adipiscing elit, consectetur adipiscing elit, consectetur adipiscing elit, 65 | - name: Project3 66 | link: https://foo.bar 67 | work: Lorem ipsum dolor sit amet, consectetur adipiscing elit, consectetur adipiscing elit, consectetur adipiscing elit, 68 | - name: IoT Hackathon 69 | link: https://hacakathon.com 70 | work: Won hackathon in a team of four, Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. 71 | 72 | # achievements 73 | achievements: 74 | - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore, Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 75 | - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore 76 | - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore, Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 77 | - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore 78 | 79 | # skills 80 | skills: 81 | proficient: C, C++, Python, Data Structures and Algorithms, Version Control System (git), Object Oriented Programming 82 | familiar: SQL, Linux, Web Technologies (HTML, CSS, JavaScript), WebGL, Backend Technologies (Django, Flask), Machine Learning, Deep Learning, PyTorch, LaTeX 83 | -------------------------------------------------------------------------------- /templates/resume.tex_jj2: -------------------------------------------------------------------------------- 1 | % Credits: https://github.com/sb2nov/resume 2 | 3 | \documentclass[letterpaper,11pt]{article} 4 | \ignorespaces 5 | 6 | \usepackage{latexsym} 7 | \usepackage[empty]{fullpage} 8 | \usepackage{titlesec} 9 | \usepackage{marvosym} 10 | \usepackage[usenames,dvipsnames]{color} 11 | \usepackage{verbatim} 12 | \usepackage{enumitem} 13 | \usepackage[hidelinks]{hyperref} 14 | \usepackage{fancyhdr} 15 | \usepackage[english]{babel} 16 | 17 | \pagestyle{fancy} 18 | \fancyhf{} % clear all header and footer fields 19 | \fancyfoot{} 20 | \renewcommand{\headrulewidth}{0pt} 21 | \renewcommand{\footrulewidth}{0pt} 22 | 23 | % Adjust margins 24 | \addtolength{\oddsidemargin}{-0.5in} 25 | \addtolength{\evensidemargin}{-0.5in} 26 | \addtolength{\textwidth}{1in} 27 | \addtolength{\topmargin}{-.5in} 28 | \addtolength{\textheight}{1.0in} 29 | 30 | \urlstyle{same} 31 | 32 | \raggedbottom 33 | \raggedright 34 | \setlength{\tabcolsep}{0in} 35 | 36 | % Sections formatting 37 | \titleformat{\section}{ 38 | \vspace{-4pt}\scshape\raggedright\large 39 | }{}{0em}{}[\color{black}\titlerule \vspace{-5pt}] 40 | 41 | %------------------------- 42 | % Custom commands 43 | \newcommand{\resumeItem}[2]{ 44 | \item\small{ 45 | \textbf{#1}{: #2 \vspace{-2pt}} 46 | } 47 | } 48 | 49 | \newcommand{\resumeSubheading}[4]{ 50 | \vspace{-1pt}\item 51 | \begin{tabular*}{0.97\textwidth}[t]{l@{\extracolsep{\fill}}r} 52 | \textbf{ #1 } & #2 \\ 53 | \textit{\small#3} & \textit{\small #4} \\ 54 | \end{tabular*}\vspace{-5pt} 55 | } 56 | 57 | \newcommand{\resumeSubItem}[2]{\resumeItem{ #1 }{ #2 }\vspace{-4pt}} 58 | 59 | \renewcommand{\labelitemii}{$\circ$} 60 | 61 | \newcommand{\resumeSubHeadingListStart}{\begin{itemize}[leftmargin=*]} 62 | \newcommand{\resumeSubHeadingListEnd}{\end{itemize}} 63 | \newcommand{\resumeItemListStart}{\begin{itemize}} 64 | \newcommand{\resumeItemListEnd}{\end{itemize}\vspace{-5pt}} 65 | 66 | %------------------------------------------- 67 | %%%%%%%%%%%%CV STARTS HERE%%%%%%%%%%%%%%%%%%%%%%%%%%%% 68 | 69 | \begin{document} 70 | 71 | %----------HEADING----------------- 72 | \begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r} 73 | \textbf{\href{((( website )))}{\Large ((( name )))}} & Email : \href{mailto: ((( email )))}{((( email )))}\\ 74 | \href{((( website )))}{Website} \(|\) \href{((( github )))}{GitHub} \(|\) \href{((( linkedin )))}{LinkedIn} & Mobile : ((( mobile ))) \\ 75 | \end{tabular*} 76 | 77 | %-----------EDUCATION----------------- 78 | \section{Education} 79 | \resumeSubHeadingListStart 80 | ((* for institute in education *)) 81 | \resumeSubheading 82 | {((( institute.institute )))}{((( institute.place )))} 83 | {(((institute.program))), ((( institute.marks )))}{((( institute.period )))} 84 | ((* endfor *)) 85 | \resumeSubHeadingListEnd 86 | 87 | %-----------EXPERIENCE----------------- 88 | \section{Experience} 89 | \resumeSubHeadingListStart 90 | ((* for experience in experiences *)) 91 | \resumeSubheading 92 | {((( experience.company )))}{((( experience.place )))} 93 | {((( experience.position )))}{((( experience.period )))} 94 | \resumeItemListStart 95 | ((* for work in experience.work *)) 96 | ((* if work.title *)) 97 | \resumeItem{((( work.title )))} 98 | ((* else *)) 99 | \item\small 100 | ((* endif *)) 101 | {((( work.description )))} 102 | ((* endfor *)) 103 | \resumeItemListEnd 104 | ((* endfor *)) 105 | 106 | \resumeSubHeadingListEnd 107 | 108 | %-----------PROJECTS----------------- 109 | \section{Projects} 110 | \setlength{\itemsep}{0.5pt} 111 | \begin{itemize} 112 | ((* for project in projects *)) 113 | \item\textbf{\href{((( project.link )))}{((( project.name )))}}{: ((( project.work )))} 114 | ((* endfor *)) 115 | \end{itemize} 116 | 117 | %-----------ACHIEVEMENTS------------- 118 | \section{Achievements} 119 | \resumeItemListStart 120 | ((* for achievement in achievements *)) 121 | \item 122 | ((( achievement ))) 123 | ((* endfor *)) 124 | \resumeItemListEnd 125 | 126 | %----------SKILLS-------------------- 127 | \section{Skills} 128 | \resumeSubHeadingListStart 129 | \item\textbf{Proficient In}{: ((( skills.proficient )))} 130 | \item\textbf{Familiar With}{: ((( skills.familiar )))} 131 | \resumeSubHeadingListEnd 132 | %-------------------------------------- 133 | \end{document} 134 | --------------------------------------------------------------------------------