├── .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 | 
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 |
--------------------------------------------------------------------------------