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