Skip to content

Commit 332c6f2

Browse files
Merge pull request #3 from anishshobithps/feat/improve-resume
feat: improve resume
2 parents fb2ff24 + d498335 commit 332c6f2

File tree

12 files changed

+549
-131
lines changed

12 files changed

+549
-131
lines changed

.docker/Dockerfile

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
1-
FROM pandoc/latex:latest
1+
FROM texlive/texlive:latest
22

3-
RUN tlmgr update --self && \
3+
RUN tlmgr option repository https://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2025/tlnet-final && \
4+
tlmgr update --self && \
45
tlmgr install \
56
enumitem \
67
titlesec \
78
xcharter \
9+
xcharter-math \
10+
fontaxes \
811
etoolbox \
912
xstring \
1013
geometry \
1114
fancyhdr \
1215
xkeyval \
13-
fontaxes
16+
microtype \
17+
hyperxmp \
18+
datetime2 \
19+
datetime2-english \
20+
embedfile
1421

1522
WORKDIR /data
1623
ENTRYPOINT ["pdflatex"]

.github/workflows/release.yml

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77
- "**.tex"
88
- "**.cls"
99
- "**.sty"
10+
- "**.json"
1011
- ".docker/**"
1112
workflow_dispatch:
1213

@@ -19,7 +20,11 @@ jobs:
1920

2021
steps:
2122
- uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 0
25+
2226
- uses: docker/setup-buildx-action@v3
27+
2328
- uses: docker/login-action@v3
2429
with:
2530
registry: ghcr.io
@@ -35,32 +40,69 @@ jobs:
3540
cache-from: type=gha
3641
cache-to: type=gha,mode=max
3742

43+
- name: Update metadata dates
44+
run: |
45+
DATE=$(date +%Y-%m-%d)
46+
YEAR=$(date +%Y)
47+
sed -i "s/\"lastModified\": \".*\"/\"lastModified\": \"$DATE\"/" resume.json
48+
sed -i "s/\"dateModified\": \".*\"/\"dateModified\": \"$YEAR\"/" schema.json
49+
50+
- name: Set build date
51+
id: date
52+
run: echo "date=$(date +%Y-%m-%d)" >> $GITHUB_OUTPUT
53+
3854
- name: Build Resume
3955
run: |
4056
docker run --rm -v "${{ github.workspace }}:/data" \
4157
ghcr.io/${{ github.repository_owner }}/latex-builder \
4258
-jobname="Anish_Shobith_P_S_Resume" main.tex
4359
60+
- name: Rename PDF with date
61+
run: |
62+
mv Anish_Shobith_P_S_Resume.pdf \
63+
"Anish_Shobith_P_S_Resume_${{ steps.date.outputs.date }}.pdf"
64+
65+
- name: Generate changelog
66+
id: changelog
67+
run: |
68+
PREV_TAG=$(git tag --sort=-version:refname | head -n 1)
69+
if [ -z "$PREV_TAG" ]; then
70+
LOG=$(git log --oneline --no-merges | head -20)
71+
else
72+
LOG=$(git log "$PREV_TAG"..HEAD --oneline --no-merges)
73+
fi
74+
echo "log<<EOF" >> $GITHUB_OUTPUT
75+
echo "$LOG" >> $GITHUB_OUTPUT
76+
echo "EOF" >> $GITHUB_OUTPUT
77+
78+
- name: Get PDF size
79+
id: meta
80+
run: |
81+
SIZE=$(du -sh "Anish_Shobith_P_S_Resume_${{ steps.date.outputs.date }}.pdf" | cut -f1)
82+
echo "size=$SIZE" >> $GITHUB_OUTPUT
83+
4484
- name: Create Release
4585
if: github.ref == 'refs/heads/main'
4686
uses: softprops/action-gh-release@v2
4787
with:
4888
tag_name: v${{ github.run_number }}
49-
name: "Resume Update ${{ github.run_number }}"
89+
name: "v${{ github.run_number }} — ${{ steps.date.outputs.date }}"
5090
body: |
51-
## 📄 Resume Update
52-
53-
**Build**: #${{ github.run_number }}
54-
**Commit**: [${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }})
55-
**Author**: ${{ github.actor }}
56-
**Date**: ${{ github.event.head_commit.timestamp }}
91+
### 📦 Build Info
92+
| Field | Value |
93+
|-------|-------|
94+
| Build | #${{ github.run_number }} |
95+
| Date | ${{ steps.date.outputs.date }} |
96+
| Commit | [`${{ github.sha }}`](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) |
97+
| Author | ${{ github.actor }} |
98+
| Size | ${{ steps.meta.outputs.size }} |
5799
58100
### 📝 Changes
59101
```
60-
${{ github.event.head_commit.message }}
102+
${{ steps.changelog.outputs.log }}
61103
```
62-
63-
### 📎 Files
64-
- [Download Resume PDF](https://github.com/${{ github.repository }}/releases/download/v${{ github.run_number }}/Anish_Shobith_P_S_Resume.pdf)
65-
files: Anish_Shobith_P_S_Resume.pdf
104+
files: Anish_Shobith_P_S_Resume_${{ steps.date.outputs.date }}.pdf
66105
token: ${{ secrets.GITHUB_TOKEN }}
106+
generate_release_notes: true
107+
make_latest: true
108+
fail_on_unmatched_files: true

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,9 @@ TSWLatexianTemp*
295295
# xwatermark package
296296
*.xwm
297297

298+
*.atfi
299+
300+
298301
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
299302
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
300303
# Uncomment the next line to have this generated file ignored.

formatting.sty

Lines changed: 32 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,53 @@
1-
% -----------------------------------------------------------------------------
2-
% Formatting.sty - Custom Formatting and Commands for a Modular Resume
3-
% -----------------------------------------------------------------------------
4-
% Purpose:
5-
% This file provides styling and commands for creating a professional resume.
6-
% It is designed to be modular, allowing easy maintenance and reuse.
7-
% -----------------------------------------------------------------------------
1+
\RequirePackage[T1]{fontenc}
2+
\RequirePackage[utf8]{inputenc}
3+
\RequirePackage{enumitem}
4+
\RequirePackage[hidelinks]{hyperref}
5+
\RequirePackage{hyperxmp}
6+
\RequirePackage{titlesec}
7+
\RequirePackage{XCharter}
8+
\RequirePackage{xstring}
9+
\RequirePackage{geometry}
10+
\RequirePackage{fancyhdr}
11+
\RequirePackage{etoolbox}
12+
\RequirePackage{microtype}
13+
\RequirePackage{datetime2}
14+
\RequirePackage{embedfile}
815

9-
% -----------------------------------------------------------------------------
10-
% Required Packages
11-
% -----------------------------------------------------------------------------
12-
\RequirePackage[T1]{fontenc} % T1 font encoding for proper hyphenation
13-
\RequirePackage[utf8]{inputenc} % UTF-8 input encoding
14-
\RequirePackage{enumitem} % Customization of list environments
15-
\RequirePackage[hidelinks]{hyperref} % Hyperlinks without visible borders
16-
\RequirePackage{titlesec} % Custom section titles formatting
17-
\RequirePackage{XCharter} % Professional font family (XCharter)
18-
\RequirePackage{xstring} % String manipulation (e.g., URL processing)
19-
\RequirePackage{geometry} % Page layout and margins
20-
\RequirePackage{fancyhdr} % Custom headers and footers
21-
\RequirePackage{etoolbox} % Enhanced conditional and command tools
16+
\geometry{a4paper, margin=0.5in}
2217

23-
% -----------------------------------------------------------------------------
24-
% Page Layout and Margins
25-
% -----------------------------------------------------------------------------
26-
\geometry{a4paper, margin=0.5in} % A4 paper with 0.5in margins
18+
\raggedright
19+
\pagestyle{empty}
20+
\input{glyphtounicode}
21+
\pdfgentounicode=1
2722

28-
% -----------------------------------------------------------------------------
29-
% Global Text and Page Settings
30-
% -----------------------------------------------------------------------------
31-
\raggedright % Left-align text
32-
\pagestyle{empty} % Disable page numbering
33-
\input{glyphtounicode} % Enable machine-readable PDF output
34-
\pdfgentounicode=1 % Unicode output
23+
% PDF/UA - mark document as tagged for accessibility
24+
\pdfminorversion=7
25+
\pdfobjcompresslevel=0
3526

36-
% -----------------------------------------------------------------------------
37-
% Section Title Formatting
38-
% -----------------------------------------------------------------------------
39-
\titleformat{\section} % Custom section title format
40-
{\bfseries\large}{}{}{}[\vspace{1pt}\titlerule\vspace{-6.5pt}] % Bold, large section titles with a horizontal line
27+
\titleformat{\section}
28+
{\bfseries\large}{}{}{}[\vspace{1pt}\titlerule\vspace{-6.5pt}]
4129

42-
% -----------------------------------------------------------------------------
43-
% List Formatting
44-
% -----------------------------------------------------------------------------
45-
\renewcommand\labelitemi{$\vcenter{\hbox{\small$\bullet$}}$} % Custom bullet for itemized lists
46-
\setlist[itemize]{ % Customization for itemized lists
47-
itemsep=-2pt, % Space between items
48-
leftmargin=12pt, % Indentation
49-
topsep=7pt % Space above list
30+
\renewcommand\labelitemi{$\vcenter{\hbox{\small$\bullet$}}$}
31+
\setlist[itemize]{
32+
itemsep=-2pt,
33+
leftmargin=12pt,
34+
topsep=7pt
5035
}
5136

52-
% -----------------------------------------------------------------------------
53-
% Spacing Adjustments
54-
% -----------------------------------------------------------------------------
55-
\setlength{\parskip}{0pt} % No extra space between paragraphs
56-
\setlength{\parindent}{0pt} % No paragraph indentation
37+
\setlength{\parskip}{0pt}
38+
\setlength{\parindent}{0pt}
5739

58-
% -----------------------------------------------------------------------------
59-
% Custom Commands
60-
% -----------------------------------------------------------------------------
61-
62-
% Command: Technologies used in a project
63-
% Usage: \technologies{Tech1, Tech2}
6440
\newcommand{\technologies}[1]{\textit{Technologies: #1}}
6541

66-
% Command: Shortened and Clickable URLs
67-
% Usage: \shorturl{https://example.com}
6842
\newcommand{\shorturl}[1]{%
6943
\StrSubstitute{#1}{https://}{}[\Result]%
7044
\StrSubstitute{\Result}{http://}{}[\Result]%
7145
\StrSubstitute{\Result}{mailto:}{}[\Result]%
72-
\href{#1}{\Result} % Converts to clickable link with a clean URL display
46+
\href{#1}{\Result}%
7347
}
7448

75-
% Command: Skills List
76-
% Usage: \skills{Type}{Skills}
7749
\newcommand{\skills}[2]{\textbf{#1:} #2}
7850

79-
% Command: Project Information Block
80-
% Usage: \project{Project Name}{URL}{Technologies}{Details}
8151
\newcommand{\project}[4]{%
8252
\textbf{#1} \hfill \shorturl{#2} \\
8353
\vspace{-9pt}
@@ -87,8 +57,6 @@
8757
\end{itemize}
8858
}
8959

90-
% Command: Work Experience Block
91-
% Usage: \experience{Role}{Company}{Time Period}{Location}{Responsibilities}
9260
\newcommand{\experience}[5]{%
9361
\noindent\textbf{#1,} {#2} -- #3 \hfill #4 \\
9462
\vspace{-9pt}
@@ -97,25 +65,6 @@
9765
\end{itemize}
9866
}
9967

100-
% Command: Education Block
101-
% Usage: \education{Degree}{Institution}{URL}{Graduation Date}
10268
\newcommand{\education}[4]{%
10369
\textbf{#1} -- \href{#3}{#2} \hfill #4
10470
}
105-
106-
% -----------------------------------------------------------------------------
107-
% Documentation for Users
108-
% -----------------------------------------------------------------------------
109-
% This package provides the following commands:
110-
% - \skills: Creates a list of skills with type and list of skills.
111-
% - \technologies: Displays technologies used in a project.
112-
% - \shorturl: Creates a clickable URL with the protocol stripped out.
113-
% - \project: Defines a project with name, URL, technologies, and details.
114-
% - \experience: Adds work experience with role, company, time period, location, and responsibilities.
115-
% - \education: Adds education details with degree, institution, URL, and graduation date.
116-
117-
% -----------------------------------------------------------------------------
118-
% Notes:
119-
% - Adjust spacing, margins, and list styles as needed for different templates.
120-
% - Sections should be imported from separate files for better modularity and reuse.
121-
% -----------------------------------------------------------------------------

main.tex

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
\documentclass[11pt]{article}
2-
\usepackage{formatting} % Custom styling and commands for a modular resume
2+
\usepackage{formatting}
3+
4+
\hypersetup{
5+
pdftitle={Anish Shobith P S},
6+
pdfauthor={Anish Shobith P S},
7+
pdfauthortitle={Software Engineer},
8+
pdfsubject={Software Engineer Resume - JavaScript, TypeScript, React, Next.js},
9+
pdfkeywords={
10+
JavaScript, TypeScript, Python, C, C++,
11+
React, Next.js, Astro, Tailwind CSS, Three.js, Framer Motion,
12+
Node.js, Bun, Express.js, Hono, REST, GraphQL,
13+
PostgreSQL, MySQL, SQLite, MongoDB, Prisma, Drizzle,
14+
Git, Docker, Linux,
15+
Typst, LaTeX,
16+
Software Engineer, SDE, Full Stack, Frontend, Backend,
17+
Mangaluru, India, Open to Work,
18+
n10nce, anishshobithps
19+
},
20+
pdfcreator={pdflatex + XCharter},
21+
pdfproducer={Anish Shobith P S},
22+
pdflang={en-US},
23+
pdfmetalang={en-US},
24+
pdfcontactaddress={Mangaluru - Karnataka - India},
25+
pdfcontactemail={anish.shobith19@gmail.com},
26+
pdfcontacturl={https://anishshobithps.com},
27+
pdfcopyright={Copyright 2024-\the\year\ Anish Shobith P S. Licensed under Apache-2.0.},
28+
pdflicenseurl={https://www.apache.org/licenses/LICENSE-2.0},
29+
pdfurl={https://anishshobithps.com},
30+
pdfpubtype={other},
31+
}
332

433
\begin{document}
534

@@ -13,4 +42,16 @@
1342
\vspace{-14pt}
1443
\input{sections/education}
1544

45+
\embedfile[
46+
mimetype=application/ld+json,
47+
desc={Schema.org structured data - Anish Shobith P S},
48+
afrelationship={/Supplement}
49+
]{schema.json}
50+
51+
\embedfile[
52+
mimetype=application/json,
53+
desc={JSON Resume - Anish Shobith P S},
54+
afrelationship={/Supplement}
55+
]{resume.json}
56+
1657
\end{document}

0 commit comments

Comments
 (0)