Update project structure

This commit is contained in:
Anthony J. Martinez 2021-03-27 09:33:24 +01:00
parent a6e8d50730
commit 74e3b99e23
12 changed files with 12 additions and 466 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
/target
/working

1
src/auth.rs Normal file
View File

@ -0,0 +1 @@
// Placeholder for authentication

View File

@ -1,25 +1,15 @@
use caty_blog::*;
use warp::Filter;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// TODO: Load configuration file defining paths to stuff
// Load into memory as a Struct in an Arc(Mutex(something))
// This should also include the admin username/hash(password)
// Load config
write_main(&render_main())?;
// Configure logging
let static_files = warp::path("static")
.and(warp::fs::dir("webroot/static"));
let index = warp::get()
.and(warp::path::end())
.and(warp::fs::file("webroot/index.html"));
let routes = static_files.or(index);
warp::serve(routes).run(([127,0,0,1], 3030)).await;
// Do shit based on arguments
// - Either generate the base directory structure for a blog
// - Or load an existing site and serve its routes based on the loaded config
// warp::serve(routes).run(([127,0,0,1], 3030)).await;
Ok(())
}

1
src/config.rs Normal file
View File

@ -0,0 +1 @@
// Placeholder for config loading

1
src/dirs.rs Normal file
View File

@ -0,0 +1 @@
// Placeholder for the directory creation logic

1
src/logging.rs Normal file
View File

@ -0,0 +1 @@
// Placeholder for logging setup

1
src/server.rs Normal file
View File

@ -0,0 +1 @@
// Placeholder for Warp routes

View File

@ -1,29 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="static/caty.css">
<title>A Blog Example</title>
</head>
<body>
<header>
<center>
<h1>Quite Magical Really</h1>
<nav>
<a href="./">HOME</a>
</nav>
</center>
</header>
<main>
{%- for post in posts %}
{{ post }}
{%- endfor -%}
</main>
<footer>
<p>This brilliance was brought to you by.. ME</p>
</footer>
</body>
</html>

View File

@ -1,31 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="static/caty.css">
<title>A Blog Example</title>
</head>
<body>
<header>
<center>
<h1>Quite Magical Really</h1>
<nav>
<a href="./">HOME</a>
</nav>
</center>
</header>
<main>
<h3>WOWWWWWWWWWWWWWW</h3>
<p>Another one.</p>
<h3>Omfg Amazing</h3>
<p>This is some cool shit here. Like srsly wtf.</p>
</main>
<footer>
<p>This brilliance was brought to you by.. ME</p>
</footer>
</body>
</html>

View File

@ -1,3 +0,0 @@
### Omfg Amazing
This is some cool shit here. Like srsly wtf.

View File

@ -1,3 +0,0 @@
### WOWWWWWWWWWWWWWW
Another one.

View File

@ -1,384 +0,0 @@
:root {
--sans-font:-apple-system,BlinkMacSystemFont,"Avenir Next",Avenir,"Nimbus Sans L",Roboto,Noto,"Segoe UI",Arial,Helvetica,"Helvetica Neue",sans-serif;
--mono-font:Consolas,Menlo,Monaco,"Andale Mono","Ubuntu Mono",monospace;
--base-fontsize:1.15rem;
--header-scale:1.25;
--line-height:1.618;
--bg: #135F4Cff;
--accent-bg:#136044ff;
--text: #B2BABBff;
--text-light: #AFB8B9ff;
--border:#829191;
--accent:#79989B;
--accent-light:#90CAF9;
--code: #BABFBFff;
--preformatted: #A4B2B3ff;
--marked: #A0A6BE;
--disabled:#EFEFEF
}
@media (prefers-color-scheme:dark) {
:root {
--bg:#212121;
--accent-bg:#2B2B2B;
--text:#DCDCDC;
--text-light:#ABABAB;
--border:#666;
--accent:#FFB300;
--accent-light:#FFECB3;
--code:#F06292;
--preformatted:#CCC;
--disabled:#111
}
img,
video {
opacity:.6
}
}
html {
font-family:var(--sans-font);
font-size:16px
}
body {
color:var(--text);
background:var(--bg);
font-size:var(--base-fontsize);
line-height:var(--line-height);
display:flex;
min-height:100vh;
flex-direction:column;
flex:1;
margin:0 auto;
max-width:45rem;
padding:0 .5rem;
overflow-x:hidden;
word-break:break-word;
overflow-wrap:break-word
}
header {
background:var(--accent-bg);
border-bottom:1px solid var(--border);
text-align:center;
padding:2rem .5rem;
width:100vw;
position:relative;
left:50%;
right:50%;
margin-left:-50vw;
margin-right:-50vw
}
header h1,
header p {
margin:0
}
header h1 {
line-height:1.1
}
nav {
font-size:1rem;
line-height:2;
padding:1rem 0
}
nav a {
margin:1rem 1rem 0 0;
border:1px solid var(--border);
border-radius:5px;
color:var(--text)!important;
display:inline-block;
padding:.1rem 1rem;
text-decoration:none;
transition:.4s
}
nav a:hover {
color:var(--accent)!important;
border-color:var(--accent)
}
nav a.current:hover {
text-decoration:none
}
footer {
margin-top:4rem;
padding:2rem 1rem 1.5rem 1rem;
color:var(--text-light);
font-size:.9rem;
text-align:center;
border-top:1px solid var(--border)
}
h1 {
font-size:calc(var(--base-fontsize) * var(--header-scale) * var(--header-scale) * var(--header-scale) * var(--header-scale));
margin-top:calc(var(--line-height) * 1.5rem)
}
h2 {
font-size:calc(var(--base-fontsize) * var(--header-scale) * var(--header-scale) * var(--header-scale));
margin-top:calc(var(--line-height) * 1.5rem)
}
h3 {
font-size:calc(var(--base-fontsize) * var(--header-scale) * var(--header-scale));
margin-top:calc(var(--line-height) * 1.5rem)
}
h4 {
font-size:calc(var(--base-fontsize) * var(--header-scale));
margin-top:calc(var(--line-height) * 1.5rem)
}
h5 {
font-size:var(--base-fontsize);
margin-top:calc(var(--line-height) * 1.5rem)
}
h6 {
font-size:calc(var(--base-fontsize)/ var(--header-scale));
margin-top:calc(var(--line-height) * 1.5rem)
}
a,
a:visited {
color:var(--accent)
}
a:hover {
text-decoration:none
}
a button,
button,
input[type=button],
input[type=reset],
input[type=submit] {
border:none;
border-radius:5px;
background:var(--accent);
font-size:1rem;
color:var(--bg);
padding:.7rem .9rem;
margin:.5rem 0;
transition:.4s
}
a button[disabled],
button[disabled],
input[type=button][disabled],
input[type=checkbox][disabled],
input[type=radio][disabled],
input[type=reset][disabled],
input[type=submit][disabled],
select[disabled] {
cursor:default;
opacity:.5;
cursor:not-allowed
}
input:disabled,
select:disabled,
textarea:disabled {
cursor:not-allowed;
background-color:var(--disabled)
}
input[type=range] {
padding:0
}
abbr {
cursor:help
}
button:enabled:hover,
button:focus,
input[type=button]:enabled:hover,
input[type=button]:focus,
input[type=checkbox]:enabled:hover,
input[type=checkbox]:focus,
input[type=radio]:enabled:hover,
input[type=radio]:focus,
input[type=reset]:enabled:hover,
input[type=reset]:focus,
input[type=submit]:enabled:hover,
input[type=submit]:focus {
opacity:.8
}
details {
padding:.6rem 1rem;
background:var(--accent-bg);
border:1px solid var(--border);
border-radius:5px;
margin-bottom:1rem
}
summary {
cursor:pointer;
font-weight:700
}
details[open] {
padding-bottom:.75rem
}
details[open] summary {
margin-bottom:.5rem
}
details[open]>:last-child {
margin-bottom:0
}
table {
border-collapse:collapse;
width:100% margin: 1.5rem 0
}
td,
th {
border:1px solid var(--border);
text-align:left;
padding:.5rem
}
th {
background:var(--accent-bg);
font-weight:700
}
tr:nth-child(even) {
background:var(--accent-bg)
}
table caption {
font-weight:700;
margin-bottom:.5rem
}
ol,
ul {
padding-left:3rem
}
input,
select,
textarea {
font-size:inherit;
font-family:inherit;
padding:.5rem;
margin-bottom:.5rem;
color:var(--text);
background:var(--bg);
border:1px solid var(--border);
border-radius:5px;
box-shadow:none;
box-sizing:border-box;
width:60%;
appearance:none;
-moz-appearance:none;
-webkit-appearance:none
}
select {
background-image:linear-gradient(45deg,transparent 49%,var(--text) 51%),linear-gradient(135deg,var(--text) 51%,transparent 49%);
background-position:calc(100% - 20px),calc(100% - 15px);
background-size:5px 5px,5px 5px;
background-repeat:no-repeat
}
input[type=checkbox],
input[type=radio] {
vertical-align:bottom;
position:relative
}
input[type=radio] {
border-radius:100%
}
input[type=checkbox]:checked,
input[type=radio]:checked {
background:var(--accent)
}
input[type=checkbox]:checked::after {
content:' ';
width:.1em;
height:.25em;
border-radius:0;
position:absolute;
top:.05em;
left:.18em;
background:0 0;
border-right:solid var(--bg) .08em;
border-bottom:solid var(--bg) .08em;
font-size:1.8em;
transform:rotate(45deg)
}
input[type=radio]:checked::after {
content:' ';
width:.25em;
height:.25em;
border-radius:100%;
position:absolute;
top:.125em;
background:var(--bg);
left:.125em;
font-size:32px
}
textarea {
width:80%
}
@media only screen and (max-width:720px) {
input,
select,
textarea {
width:100%
}
}
input[type=checkbox],
input[type=radio] {
width:auto
}
input[type=file] {
border:0
}
fieldset {
border:0;
padding:0;
margin:0
}
hr {
color:var(--border);
border-top:1px;
margin:1rem auto
}
mark {
padding:2px 5px;
border-radius:4px;
background:var(--marked)
}
main img,
main video {
max-width:100%;
border-radius:5px
}
figure {
margin:0
}
figcaption {
font-size:.9rem;
color:var(--text-light);
text-align:center;
margin-bottom:1rem
}
blockquote {
margin:2rem 0 2rem 2rem;
padding:.4rem .8rem;
border-left:.35rem solid var(--accent);
opacity:.8;
font-style:italic
}
cite {
font-size:.9rem;
color:var(--text-light);
font-style:normal
}
code,
kbd,
pre,
pre span,
samp {
font-size:1.075rem;
font-family:var(--mono-font);
color:var(--code)
}
kbd {
color:var(--preformatted);
border:1px solid var(--preformatted);
border-bottom:3px solid var(--preformatted);
border-radius:5px;
padding:.1rem
}
pre {
padding:1rem 1.4rem;
max-width:100%;
overflow:auto;
overflow-x:auto;
color:var(--preformatted);
background:var(--accent-bg);
border:1px solid var(--border);
border-radius:5px
}
pre code {
color:var(--preformatted);
background:0 0;
margin:0;
padding:0
}