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:
commit
eb4876c739
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/target
|
||||
**/*.rs.bk
|
1176
Cargo.lock
generated
Normal file
1176
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
19
Cargo.toml
Normal file
19
Cargo.toml
Normal 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
6
README.md
Normal 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
133
src/main.rs
Normal 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(" ", " ");
|
||||
|
||||
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
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
27
static/raw_md/1resume.md
Normal 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
47
static/style.css
Normal 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
28
templates/404.html.tera
Normal 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
27
templates/base.html.tera
Normal 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"> ▊ </span>
|
||||
</p>
|
||||
</div>
|
||||
<h6 class="text"> © <script type="text/javascript">document.write( new Date().getFullYear().toString());</script> Joey Hines</h6>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
21
templates/index.html.tera
Normal file
21
templates/index.html.tera
Normal 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>
|
||||
{% endfor %}
|
||||
<a class="link" href="https://www.github.com/joeyahines"> github</a>
|
||||
<a class="link" href="mailto:joey@ahines.net"> email</a>
|
||||
<a class="link" href="https://www.linkedin.com/in/joeyahines/"> linkedin</a> <br/>
|
||||
{% endblock content %}
|
11
templates/md_page.html.tera
Normal file
11
templates/md_page.html.tera
Normal file
@ -0,0 +1,11 @@
|
||||
{% extends "base" %}
|
||||
|
||||
{% block command %}
|
||||
cat {{ page }}.md
|
||||
{% endblock command %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<br/>
|
||||
{{ md_data | safe }}
|
||||
{% endblock content %}
|
Loading…
x
Reference in New Issue
Block a user