check in
This commit is contained in:
commit
b3a5f342bd
19 changed files with 3176 additions and 0 deletions
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Generated by Cargo
|
||||||
|
# will have compiled files and executables
|
||||||
|
/target
|
||||||
|
/dist/
|
||||||
|
/.idea/
|
||||||
|
/.vscode/
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# These are backup files generated by rustfmt
|
||||||
|
**/*.rs.bk
|
2997
Cargo.lock
generated
Normal file
2997
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
28
Cargo.toml
Normal file
28
Cargo.toml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
[package]
|
||||||
|
name = "mabel-hex"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Ash Keel <ash@nebula.cafe>"]
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
dioxus = { version = "0.6", features = ["fullstack"] }
|
||||||
|
dioxus-cli-config = "0.6"
|
||||||
|
dioxus-logger = "0.6"
|
||||||
|
dotenvy = { version = "0.15", optional = true }
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
server = ["dioxus/server", "dotenvy"]
|
||||||
|
web = ["dioxus/web"]
|
||||||
|
|
||||||
|
[profile]
|
||||||
|
|
||||||
|
[profile.wasm-dev]
|
||||||
|
inherits = "dev"
|
||||||
|
opt-level = 1
|
||||||
|
|
||||||
|
[profile.server-dev]
|
||||||
|
inherits = "dev"
|
||||||
|
|
||||||
|
[profile.android-dev]
|
||||||
|
inherits = "dev"
|
19
Dioxus.toml
Normal file
19
Dioxus.toml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[application]
|
||||||
|
name = "mabel"
|
||||||
|
default_platform = "fullstack"
|
||||||
|
out_dir = "dist"
|
||||||
|
asset_dir = "assets"
|
||||||
|
|
||||||
|
[web.app]
|
||||||
|
title = "Cenere"
|
||||||
|
|
||||||
|
[web.watcher]
|
||||||
|
reload_html = true
|
||||||
|
watch_path = ["src", "assets"]
|
||||||
|
|
||||||
|
[web.resource]
|
||||||
|
style = ["/assets/style/main.css"]
|
||||||
|
script = []
|
||||||
|
|
||||||
|
[web.resource.dev]
|
||||||
|
script = []
|
19
README.md
Normal file
19
README.md
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Development
|
||||||
|
|
||||||
|
Your new bare-bones project includes minimal organization with a single `main.rs` file and a few assets.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Serving Your App
|
||||||
|
|
||||||
|
Run the following command in the root of your project to start developing with the default platform:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dx serve --platform web
|
||||||
|
```
|
||||||
|
|
||||||
|
To run for a different platform, use the `--platform platform` flag. E.g.
|
||||||
|
```bash
|
||||||
|
dx serve --platform desktop
|
||||||
|
```
|
||||||
|
|
22
assets/main.css
Normal file
22
assets/main.css
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
@import url(https://rsms.me/inter/inter.css);
|
||||||
|
|
||||||
|
:root {
|
||||||
|
background-color: #F8F7FF;
|
||||||
|
color: rgb(23, 3, 21);
|
||||||
|
|
||||||
|
font-family: Inter, sans-serif;
|
||||||
|
/* fix for Chrome */
|
||||||
|
font-feature-settings: 'liga' 1, 'calt' 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@supports (font-variation-settings: normal) {
|
||||||
|
:root {
|
||||||
|
font-family: InterVariable, sans-serif;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
1
src/domain/entities/mod.rs
Normal file
1
src/domain/entities/mod.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pub mod site;
|
4
src/domain/entities/site.rs
Normal file
4
src/domain/entities/site.rs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
pub struct SiteMetadata {
|
||||||
|
pub domain: String,
|
||||||
|
pub title: String,
|
||||||
|
}
|
1
src/domain/mod.rs
Normal file
1
src/domain/mod.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pub mod entities;
|
2
src/inbound/mod.rs
Normal file
2
src/inbound/mod.rs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#[cfg(any(feature = "web", feature = "server"))]
|
||||||
|
pub mod renderer;
|
10
src/inbound/renderer/mod.rs
Normal file
10
src/inbound/renderer/mod.rs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#![allow(non_snake_case)]
|
||||||
|
|
||||||
|
use dioxus::prelude::*;
|
||||||
|
|
||||||
|
#[component]
|
||||||
|
pub fn App() -> Element {
|
||||||
|
rsx! {
|
||||||
|
h1 { "hello world" }
|
||||||
|
}
|
||||||
|
}
|
27
src/main.rs
Normal file
27
src/main.rs
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
use dioxus::prelude::*;
|
||||||
|
use dioxus_logger::tracing::Level;
|
||||||
|
use outbound::repository::adapters::static_data::StaticData;
|
||||||
|
|
||||||
|
mod domain;
|
||||||
|
mod inbound;
|
||||||
|
mod outbound;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
#[cfg(feature = "server")]
|
||||||
|
{
|
||||||
|
let _ = dotenvy::dotenv();
|
||||||
|
}
|
||||||
|
|
||||||
|
dioxus_logger::init(Level::INFO).expect("logger failed to init");
|
||||||
|
|
||||||
|
let mut builder = dioxus::LaunchBuilder::new();
|
||||||
|
server_only! {
|
||||||
|
builder = builder
|
||||||
|
.with_context_provider(
|
||||||
|
|| {
|
||||||
|
Box::new(outbound::services::site::SiteService::new(StaticData{}))
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
builder.launch(inbound::renderer::App);
|
||||||
|
}
|
2
src/outbound/mod.rs
Normal file
2
src/outbound/mod.rs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
pub mod repository;
|
||||||
|
pub mod services;
|
1
src/outbound/repository/adapters/mod.rs
Normal file
1
src/outbound/repository/adapters/mod.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pub mod static_data;
|
12
src/outbound/repository/adapters/static_data.rs
Normal file
12
src/outbound/repository/adapters/static_data.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
use crate::{domain::entities::site::SiteMetadata, outbound::repository::site::SiteRepository};
|
||||||
|
|
||||||
|
pub struct StaticData {}
|
||||||
|
|
||||||
|
impl SiteRepository for StaticData {
|
||||||
|
async fn get_site_by_domain(domain: &str) -> SiteMetadata {
|
||||||
|
SiteMetadata {
|
||||||
|
domain: domain.to_string(),
|
||||||
|
title: "Test site".to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
4
src/outbound/repository/mod.rs
Normal file
4
src/outbound/repository/mod.rs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
pub mod site;
|
||||||
|
|
||||||
|
#[cfg(feature = "server")]
|
||||||
|
pub mod adapters;
|
5
src/outbound/repository/site.rs
Normal file
5
src/outbound/repository/site.rs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
use crate::domain::entities::site::SiteMetadata;
|
||||||
|
|
||||||
|
pub trait SiteRepository {
|
||||||
|
async fn get_site_by_domain(domain: &str) -> SiteMetadata;
|
||||||
|
}
|
1
src/outbound/services/mod.rs
Normal file
1
src/outbound/services/mod.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
pub mod site;
|
11
src/outbound/services/site.rs
Normal file
11
src/outbound/services/site.rs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
use crate::outbound::repository::site::SiteRepository;
|
||||||
|
|
||||||
|
pub struct SiteService<SiteRepo: SiteRepository> {
|
||||||
|
site_repository: SiteRepo,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<SiteRepo: SiteRepository> SiteService<SiteRepo> {
|
||||||
|
pub fn new(site_repository: SiteRepo) -> Self {
|
||||||
|
Self { site_repository }
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue