Initial commit

+ Contains base files and a resume file
+ More links are planned for the future
+ Might need some cleanup work and testing in the future
This commit is contained in:
Joey Hines 2020-02-16 15:33:09 -06:00
commit eb4876c739
12 changed files with 1497 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/target
**/*.rs.bk

1176
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

19
Cargo.toml Normal file
View File

@ -0,0 +1,19 @@
[package]
name = "jsite"
version = "0.1.0"
authors = ["Joey Hines <joey@ahines.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rocket = "0.4.2"
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"
[dependencies.rocket_contrib]
version = "0.4.2"
default-features = false
features = ["tera_templates", "serve"]

6
README.md Normal file
View File

@ -0,0 +1,6 @@
# My Website
A simplistic website written in Rust using the [Rocket]("https://rocket.rs/") using [Tera]("https://tera.netlify.com/")
templates.
View the website at www.ahines.net

133
src/main.rs Normal file
View File

@ -0,0 +1,133 @@
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
#[macro_use] extern crate serde_derive;
use std::collections::HashMap;
use rocket::Request;
use rocket_contrib::templates::Template;
use rocket_contrib::serve::StaticFiles;
use std::{fs, io};
use std::path::PathBuf;
#[derive(Serialize)]
struct MDFile {
file_name: String,
link_name: String,
}
/// Returns the rendered template of the index page of the website. This includes links and md
/// pages included in `static/raw_md`
#[get("/")]
fn index() -> Template {
let mut map: HashMap<&str, Vec<MDFile>> = HashMap::new();
let mut links: Vec<MDFile> = Vec::new();
match get_pages(&mut links) {
Err(_) => (),
Ok(_) => (),
}
map.insert("links", links);
Template::render("index", &map)
}
/// Gets all the raw md pages contained in static/raw_md/
///
/// The md page can start with a number
///
/// # Arguments
///
/// * `links` - A reference to a vector of string to insert the links into
fn get_pages(links: &mut Vec<MDFile>) -> io::Result<()> {
// Gather all of the md files in static/raw_md/
let mut entries: Vec<PathBuf> = fs::read_dir("static/raw_md/")?
.map(|res| res.map(|e| e.path()))
.collect::<Result<Vec<_>, io::Error>>()?;
// Sort so they are always in the same order
entries.sort();
//
for entry in entries {
let file_name = entry.file_stem().unwrap().to_str().unwrap();
let link_name;
if file_name.chars().next().unwrap().is_numeric() {
link_name = &file_name[1..];
}
else {
link_name = file_name;
}
let md_file = MDFile {
file_name: String::from(file_name),
link_name: String::from(link_name),
};
links.push(md_file);
}
Ok(())
}
/// Returns a rendered template of a raw md page if it exists
///
/// #Arguments
///
/// * `page` - a string containing the name of the md file to look for
#[get("/<page>")]
fn md_page(page: String) -> Template {
let mut map = HashMap::new();
let mut md_files: Vec<MDFile> = Vec::new();
match get_pages(&mut md_files) {
Err(_) => (),
Ok(_) => (),
};
let mut file_name = String::new();
for md_file in md_files {
if md_file.link_name.eq_ignore_ascii_case(page.as_str()) {
file_name = md_file.file_name.clone();
}
}
let mut contents = match fs::read_to_string(format!("static/raw_md/{}.md", file_name)) {
Ok(contents) => contents,
Err(_) => {
map.insert("error_page", page);
return Template::render("404", map)
},
};
contents = contents.replace("\n", "<br>");
contents = contents.replace(" ", "&nbsp;&nbsp;");
map.insert("page", page);
map.insert("md_data", contents);
Template::render("md_page", &map)
}
#[catch(404)]
fn not_found(req: &Request<'_>) -> Template {
let mut map = HashMap::new();
map.insert("error_page", String::from(req.uri().path()));
Template::render("404", &map)
}
fn rocket() -> rocket::Rocket {
rocket::ignite()
.mount("/", routes![index, md_page], )
.mount("/static", StaticFiles::from("static"))
.attach(Template::fairing())
.register(catchers![not_found])
}
fn main() {
rocket().launch();
}

BIN
static/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

27
static/raw_md/1resume.md Normal file
View File

@ -0,0 +1,27 @@
Joey Hines - joey@ahines.net - Auburn,AL
=========================================
Education
---------
* Masters of Science in Electrical and Computer Engineering
* Auburn University, Auburn, AL. GPA: 4.0. Expected May 2021
* Bachelors of Science in Computer Engineering
* The University of Texas at Dallas, Richardson, TX. GPA: 3.59. May 2019
Technical Skills
----------------
* Programing Languages: C, Python, Java, Rust, Verilog
* Operating Systems: Linux, Windows
* Version Control: Git, SVN
Work Experience
---------------
Auburn University - Graduate Research and Teaching Assistant - August 2019 to Present
* Command and Data Handling (CDHS) team lead for a cube satellite project
* Collaborated with other team members to develop mission software
* Instructed an embedded systems lab course covering the fundamentals of embedded programing on a microcontroller
Crestron Electronics - Intern - Firmware Engineering, BSP Group - Summer 2018 and 2019
* Worked with other engineers on U-boot and Linux kernel development for an embedded control system.
* Adapted existing device drivers, including a UART driver, for use in the context of the control system.
* Optimized Linux Kernel and user-space apps for memory usage.

47
static/style.css Normal file
View File

@ -0,0 +1,47 @@
.blinking{
animation:blinkingText 0.8s infinite;
}
@keyframes blinkingText{
100%{ color: transparent; }
}
.text {
font-family: "Ubuntu Mono", monospace;
color: whitesmoke;
}
.body {
font-size: large;
}
.heading {
font-family: "Ubuntu Mono", monospace;
color: limegreen;
}
.no_underline {
text-decoration: none;
}
.link {
color: #268BD2;
}
.center {
max-width: 1250px;
margin: auto;
}
.terminal {
background-color: #292929;
padding: 5px;
border-radius: 10px;
}
.prompt {
color: limegreen;
}
body {
background-color: black;
}

28
templates/404.html.tera Normal file
View File

@ -0,0 +1,28 @@
{% extends "base" %}
{% block command %}
./error.sh
{% endblock command %}
{% block content %}
</p>
<pre class="text">
,--, ,--,
,--.'| ,----.. ,--.'|
,--, | : / / \ ,--, | :
,---.'| : ' / . : ,---.'| : '
; : | | ; . / ;. \; : | | ;
| | : _' |. ; / ` ;| | : _' |
: : |.' |; | ; \ ; |: : |.' |
| ' ' ; :| : | ; | '| ' ' ; :
\ \ .'. |. | ' ' ' :\ \ .'. |
`---`: | '' ; \; / | `---`: | '
' ; | \ \ ', / ' ; |
| : ; ; : / | : ;
' ,/ \ \ .' ' ,/
'--' `---` '--'
</pre>
<p class="text body">
<br>Page: {{ error_page }} Not found...<br>
{% endblock content %}

27
templates/base.html.tera Normal file
View File

@ -0,0 +1,27 @@
<!DOCTYPE html>
<link rel="stylesheet" type="text/css" href="/static/style.css" xmlns="http://www.w3.org/1999/html">
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Joey Hines.</title>
<link href="https://fonts.googleapis.com/css?family=Ubuntu+Mono&display=swap" rel="stylesheet">
<link rel='shortcut icon' href='/static/logo.png'/>
</head>
<body>
<div class="center">
<a class="no_underline" href="/"> <h1 class="heading"> Joey Hines.</h1></a>
<div class="terminal">
<p class="text body">
<span class="prompt">joey@ahines:~$</span> {% block command %}{% endblock command %} <br/>
{% block content %}{% endblock content %}
<br/>
<span class="prompt">joey@ahines:~$</span> <span class="blinking"> &#9610; </span>
</p>
</div>
<h6 class="text"> &copy <script type="text/javascript">document.write( new Date().getFullYear().toString());</script> Joey Hines</h6>
</div>
</body>
</html>

21
templates/index.html.tera Normal file
View File

@ -0,0 +1,21 @@
{% extends "base" %}
{% block command %}
./about.sh
{% endblock command %}
{% block content %}
> Aspiring Embedded Software Engineer <br/>
> Electrical and Computer Engineering Masters Student at Auburn University <br/>
> Graduated from the University of Texas at Dallas with a BS in Computer Engineering <br/>
> Maker of Basic Websites <br/>
<br/>
<span class="prompt">joey@ahines:~$</span> ls <br/>
{% for link in links %}
<a class="link" href="/{{ link.link_name }}">{{ link.link_name }}</a>&nbsp;&nbsp;
{% endfor %}
<a class="link" href="https://www.github.com/joeyahines"> github</a>&nbsp;&nbsp;
<a class="link" href="mailto:joey@ahines.net"> email</a>&nbsp;&nbsp;
<a class="link" href="https://www.linkedin.com/in/joeyahines/"> linkedin</a>&nbsp;&nbsp;<br/>
{% endblock content %}

View File

@ -0,0 +1,11 @@
{% extends "base" %}
{% block command %}
cat {{ page }}.md
{% endblock command %}
{% block content %}
<br/>
{{ md_data | safe }}
{% endblock content %}