Reorganization and Data Files

- Use more template / partial features of 11ty by splitting
  up sections of code into separate files
- Change output directory to "dist"
- Use njk as the template engine
- Add data file for navigation links and site metadata
This commit is contained in:
Sravan Balaji
2025-01-01 16:26:05 -05:00
parent 2ebfb8ef48
commit b21d04854e
14 changed files with 248 additions and 427 deletions

View File

@@ -4,9 +4,12 @@ module.exports = function (eleventyConfig) {
eleventyConfig.addPassthroughCopy("./src/scripts");
return {
markdownTemplateEngine: "njk",
dataTemplateEngine: "njk",
htmlTemplateEngine: "njk",
dir: {
input: "src",
output: "public",
output: "dist",
},
};
};

2
.gitignore vendored
View File

@@ -1 +1 @@
public
dist

View File

@@ -19,7 +19,6 @@ dev:
-it \
-p {{HOST_PORT}}:8080 \
-v ./src:/opt/app/src \
-v ./public:/opt/app/public \
-v ./.eleventy.js:/opt/app/.eleventy.js \
11ty:latest \
npx @11ty/eleventy --serve
@@ -29,7 +28,7 @@ build-site:
docker run \
-it \
-v ./src:/opt/app/src \
-v ./public:/opt/app/public \
-v ./dist:/opt/app/dist \
-v ./.eleventy.js:/opt/app/.eleventy.js \
11ty:latest \
npx @11ty/eleventy

24
src/_data/navigation.json Normal file
View File

@@ -0,0 +1,24 @@
{
"items": [
{
"text": "About",
"url": "/about/"
},
{
"text": "Portfolio",
"url": "/portfolio/"
},
{
"text": "Personal",
"url": "/personal/"
},
{
"text": "Blog",
"url": "/blog/"
},
{
"text": "Documentation",
"url": "/documentation/"
}
]
}

7
src/_data/site.json Normal file
View File

@@ -0,0 +1,7 @@
{
"author": "Sravan Balaji",
"url": "https://sravanbalaji.com",
"copyrightYear": 2019,
"licenseFile": "https://github.com/balajsra/sravanbalaji.com/blob/master/LICENSE",
"licenseName": "MIT License"
}

View File

@@ -1,253 +0,0 @@
<!DOCTYPE html>
<html lang="en" color-mode="light">
<head>
<!--Required meta tags-->
<meta charset="utf-8" />
<meta name="author" content="Sravan Balaji" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Bootstrap -->
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous"
/>
<script
src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"
></script>
<!-- highlight.js -->
<link
rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/styles/default.min.css"
/>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/highlight.min.js"></script>
<script>
hljs.initHighlightingOnLoad();
</script>
<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="style.css" />
<!-- Favicon -->
<link rel="icon" href="/assets/branding/favicon.ico" type="image/x-icon" />
<!-- Title -->
<title>{{ title }}</title>
</head>
<nav class="navbar my-nav navbar-expand-md fixed-top">
<!-- Brand -->
<a class="navbar-brand" href="/">
<img
src="/assets/branding/logo.png"
alt="Icon"
width="30px"
height="30px"
class="d-inline-block align-top"
/>
<img
src="/assets/branding/name.png"
alt="Name"
height="30px"
class="d-inline-block align-center"
/>
</a>
<!-- Toggler/collapsible Button -->
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#collapsibleNavbar"
>
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar links -->
<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav">
<!-- About -->
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="/about"
id="navbardrop"
data-toggle="dropdown"
>
About
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="/about#bio"> Bio </a>
<a class="dropdown-item" href="/about#contact_me">
Contact Me
</a>
</div>
</li>
<!-- Portfolio -->
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="/portfolio"
id="navbardrop"
data-toggle="dropdown"
>
Portfolio
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="/portfolio#resume">
Resume
</a>
<a class="dropdown-item" href="/portfolio#education">
Education
</a>
<a
class="dropdown-item"
href="/portfolio#professional_experience"
>
Professional Experience
</a>
<!-- <a class="dropdown-item" href="/portfolio#research">
Research
</a>
<a class="dropdown-item" href="/portfolio#projects">
Projects
</a> -->
</div>
</li>
<!-- Personal -->
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="/personal"
id="navbardrop"
data-toggle="dropdown"
>
Personal
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="/personal#software">
Software
</a>
<a class="dropdown-item" href="/personal#hardware">
Hardware
</a>
<a class="dropdown-item" href="/personal#video_games">
Video Games
</a>
<a class="dropdown-item" href="/personal#podcasts">
Podcasts
</a>
<a class="dropdown-item" href="/personal#music">
Music
</a>
</div>
</li>
<!-- Blog -->
<li class="nav-item">
<a class="nav-link" href="/blog"> Blog </a>
</li>
<!-- Documentation -->
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="/documentation"
id="navbardrop"
data-toggle="dropdown"
>
Documentation
</a>
<div class="dropdown-menu">
<a
class="dropdown-item"
href="/documentation#introduction"
>
Introduction
</a>
<a
class="dropdown-item"
href="/documentation#website_hosting"
>
Website Hosting
</a>
<a
class="dropdown-item"
href="/documentation#web_design"
>
Web Design
</a>
<a
class="dropdown-item"
href="/documentation#aesthetics"
>
Aesthetics
</a>
<a
class="dropdown-item"
href="/documentation#inspiration"
>
Inspiration
</a>
</div>
</li>
</ul>
</div>
<!-- Dark Mode Toggle -->
<!-- Reference: https://github.com/coliff/dark-mode-switch -->
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="darkSwitch" />
<label
class="custom-control-label"
for="darkSwitch"
id="darkSwitchLabel"
>Dark Mode</label
>
</div>
<script src="/scripts/dark-mode-switch.min.js"></script>
</nav>
<body>
<div class="container-fluid px-md-6">
<div class="row align-items-center">
<div class="col-md-12">
{{ content }}
</div>
</div>
</div>
</body>
<footer>
<div class="container-fluid px-md-6">
<div class="row align-items-center">
<div class="col-md-12">
<small>
Copyright &copy; 2019 Sravan Balaji under
<a
rel="license"
href="https://docs.google.com/gview?url=https://github.com/balajsra/sravanbalaji.com/raw/master/LICENSE"
target="_blank"
>MIT License</a>
</small>
</div>
</div>
</div>
</footer>
</html>

View File

@@ -0,0 +1,15 @@
<!doctype html>
<html lang="en" color-mode="light">
<head>
{% include "partials/site-head.html" %}
{% include "partials/navigation.html" %}
</head>
<body>
<main tabindex="-1" id="main-content">{% block content %}{% endblock %}</main>
</body>
<footer>
{% include "partials/footer.html" %}
</footer>
</html>

View File

@@ -0,0 +1,11 @@
<!doctype html>
{% extends "layouts/base.html" %}
{% block content %}
<div class="container-fluid px-md-6">
<div class="row align-items-center">
<div class="col-md-12">
{{ content | safe }}
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,15 @@
<!doctype html>
<div class="container-fluid px-md-6">
<div class="row align-items-center">
<div class="col-md-12">
<small>
Copyright &copy; {{ site.copyrightYear }} {{ site.author }} under
<a
rel="license"
href="{{ site.licenseFile }}"
target="_blank"
>{{ site.licenseName }}</a>
</small>
</div>
</div>
</div>

View File

@@ -0,0 +1,55 @@
<!doctype html>
<header role="banner" class="site-head">
<nav class="navbar my-nav navbar-expand-md fixed-top">
<!-- Brand -->
<a class="navbar-brand" href="/">
<img
src="/assets/branding/logo.png"
alt="Icon"
width="30px"
height="30px"
class="d-inline-block align-top"
/>
<img
src="/assets/branding/name.png"
alt="Name"
height="30px"
class="d-inline-block align-center"
/>
</a>
<!-- Toggler/collapsible Button -->
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#collapsibleNavbar"
>
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar links -->
<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav">
{% for item in navigation.items %}
<li class="nav-item">
<a class="nav-link" href="{{ item.url }}">{{ item.text }}</a>
</li>
{% endfor %}
</ul>
</div>
<!-- Dark Mode Toggle -->
<!-- Reference: https://github.com/coliff/dark-mode-switch -->
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="darkSwitch" />
<label
class="custom-control-label"
for="darkSwitch"
id="darkSwitchLabel"
>Dark Mode</label
>
</div>
<script src="/scripts/dark-mode-switch.min.js"></script>
</nav>
</header>

View File

@@ -0,0 +1,47 @@
<!doctype html>
<!--Required meta tags-->
<meta charset="utf-8" />
<meta name="author" content="{{ site.author }}" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Bootstrap -->
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous"
/>
<script
src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"
></script>
<!-- highlight.js -->
<link
rel="stylesheet"
href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/styles/default.min.css"
/>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.1/highlight.min.js"></script>
<script>
hljs.initHighlightingOnLoad();
</script>
<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="style.css" />
<!-- Favicon -->
<link rel="icon" href="/assets/branding/favicon.ico" type="image/x-icon" />
<!-- Title -->
<title>{{ title }}</title>

View File

@@ -1,169 +0,0 @@
<!DOCTYPE html>
<html lang="en" color-mode="light">
<head>
<script
language="javascript"
type="text/javascript"
src="common/header.txt"
></script>
<title>About</title>
</head>
<script
language="javascript"
type="text/javascript"
src="common/navbar.txt"
></script>
<body>
<div class="container-fluid px-md-6">
<!---------------------------------
BIO
----------------------------------->
<div id="bio">
<div class="row align-items-center">
<div class="col-md-12">
<h1><a name="bio">Bio</a></h1>
</div>
</div>
<div class="row align-items-center">
<div class="col-md-3">
<img
class="img-fluid mx-auto d-block"
src="./assets/about/profile_picture.jpg"
/>
</div>
<div class="col-md-9">
<p>
Sravan Balaji completed his undergraduate and graduate degrees at
the
<a href="https://umich.edu" target="_blank"
>University of Michigan, Ann Arbor</a
>. He earned dual B.S.E.'s in
<a href="https://me.engin.umich.edu/" target="_blank"
>Mechanical Engineering</a
>
and
<a href="https://cse.engin.umich.edu/" target="_blank"
>Computer Science</a
>
in December 2020 and an M.S. in
<a href="https://robotics.umich.edu/" target="_blank">Robotics</a>
in December 2021.
</p>
<p>
Sravan worked as a Graduate Navigation Intern at
<a href="https://www.mitre.org/" target="_blank">MITRE</a>
during summer 2021. You can learn more about this and his other
work experiences in the
<a href="./portfolio.html#professional_experience"
>professional experience</a
>
section of the
<a href="./portfolio.html">portfolio</a> page. He is currently
working at
<a href="https://www.mitre.org/" target="_blank">MITRE</a>
as an Associate Autonomous Systems Engineer in McLean, VA.
</p>
<p>
Sravan's professional and academic interests are in controls,
motion planning, robotic perception & manipulation, autonomous &
connected vehicles, software development, and GNU/Linux among
other things. His personal interests include video games,
podcasts, music, cooking, football, soccer, formula 1, and
productivity software.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-md-12">
<h1><a name="contact_me">Contact Me</a></h1>
</div>
</div>
<div class="row align-items-center">
<div class="col-md-12">
<p>
Feel free to reach out to me via email if you have any questions
about my website, college education, professional experience, or
anything else. If you have suggestions for the website or would
like to see the source files, check out my
<a
href="https://github.com/balajsra/sravanbalaji.com"
target="_blank"
>
GitHub repository</a
>. If you would like to connect with me on LinkedIn, use the link
below. I will do my best to respond to any communication in a
timely manner. Finally, check out my YouTube channel if you are
interested in some of the projects I have worked on.
</p>
</div>
</div>
</div>
<!---------------------------------
CONTACT ME
----------------------------------->
<div id="contact_me">
<div class="row align-items-center">
<div class="col-md-3 text-center">
<a href="mailto:balajsra@umich.edu" target="_blank">
<img
class="img-fluid mx-auto d-block"
alt="Email"
src="./assets/about/email.png"
/>
</a>
<p><br /><b>Email:</b> balajsra@umich.edu</p>
</div>
<div class="col-md-3 text-center">
<a
href="https://www.linkedin.com/in/sravan-balaji/"
target="_blank"
>
<img
class="img-fluid mx-auto d-block"
alt="LinkedIn"
src="./assets/about/linkedin.png"
/>
</a>
<p><br /><b>LinkedIn:</b> sravan-balaji</p>
</div>
<div class="col-md-3 text-center">
<a href="https://github.com/balajsra" target="_blank">
<img
class="img-fluid mx-auto d-block"
alt="GitHub"
src="./assets/about/github.png"
/>
</a>
<p><br /><b>GitHub:</b> balajsra</p>
</div>
<div class="col-md-3 text-center">
<a
href="https://www.youtube.com/channel/UC-xFJ4IKdogbpoQdQf2mgaA"
target="_blank"
>
<img
class="img-fluid mx-auto d-block"
alt="YouTube"
src="./assets/about/youtube.png"
/>
</a>
<p><br /><b>YouTube:</b> Sravan Balaji</p>
</div>
</div>
</div>
</div>
</body>
<footer>
<script
language="javascript"
type="text/javascript"
src="common/footer.txt"
></script>
</footer>
</html>

67
src/about.md Normal file
View File

@@ -0,0 +1,67 @@
---
title: About
layout: "layouts/home.html"
---
# Bio
![Profile Picture](/assets/about/profile_picture.jpg)
Sravan Balaji completed his undergraduate and graduate degrees at the [University of Michigan, Ann Arbor](https://umich.edu). He earned dual B.S.E.'s in [Mechanical Engineering](https://me.engin.umich.edu) and [Computer Science](https://cse.engin.umich.edu) in December 2020 and an M.S. in [Robotics](https://robotics.umich.edu) in December 2021.
Sravan worked as a Graduate Navigation Intern at [MITRE](https://www.mitre.org) during summer 2021. You can learn more about this and his other work experiences in the [professional experience](/portfolio#professional_experience) section of the [portfolio](/portfolio) page. He later returned to [MITRE](https://www.mitre.org) full-time to work as an Autonomous Systems Engineer in McLean, VA. He currently works at [Metron](https://metsci.com) as a Software Engineer in Reston, VA.
Sravan's professional and academic interests are in controls, motion planning, robotic perception & manipulation, autonomous & connected vehicles, software development, and GNU/Linux among other things. His personal interests include video games, podcasts, music, cooking, football, soccer, formula 1, and productivity software.
# Contact Me
Feel free to reach out to me via email if you have any questions about my website, college education, professional experience, or anything else. If you have suggestions for the website or would like to see the source files, check out my [GitHub repository](https://github.com/balajsra/sravanbalaji.com). If you would like to connect with me on LinkedIn, use the link below. I will do my best to respond to any communication in a timely manner. Finally, check out my YouTube channel if you are interested in some of the projects I have worked on.
<div class="row align-items-center">
<div class="col-md-3 text-center">
<a href="mailto:balajsra@umich.edu" target="_blank">
<img
class="img-fluid mx-auto d-block"
alt="Email"
src="/assets/about/email.png"
/>
</a>
<p><br /><b>Email:</b> balajsra@umich.edu</p>
</div>
<div class="col-md-3 text-center">
<a
href="https://www.linkedin.com/in/sravan-balaji/"
target="_blank"
>
<img
class="img-fluid mx-auto d-block"
alt="LinkedIn"
src="/assets/about/linkedin.png"
/>
</a>
<p><br /><b>LinkedIn:</b> sravan-balaji</p>
</div>
<div class="col-md-3 text-center">
<a href="https://github.com/balajsra" target="_blank">
<img
class="img-fluid mx-auto d-block"
alt="GitHub"
src="/assets/about/github.png"
/>
</a>
<p><br /><b>GitHub:</b> balajsra</p>
</div>
<div class="col-md-3 text-center">
<a
href="https://www.youtube.com/channel/UC-xFJ4IKdogbpoQdQf2mgaA"
target="_blank"
>
<img
class="img-fluid mx-auto d-block"
alt="YouTube"
src="/assets/about/youtube.png"
/>
</a>
<p><br /><b>YouTube:</b> Sravan Balaji</p>
</div>
</div>

View File

@@ -1,6 +1,6 @@
---
title: Sravan Balaji
layout: "base.html"
layout: "layouts/home.html"
---
# Welcome!