Initial public release

This commit is contained in:
thakares committed 2026-06-11 20:19:03 +05:30
commit c1107147b4
92 files changed
+10562

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
use askama::Template;
use axum::{
response::{IntoResponse, Response, Html},
http::StatusCode,
};
#[derive(Template)]
#[template(path = "dashboard.html")]
pub struct DashboardTemplate {
pub admin_username: String,
pub total_urls: i64,
pub total_pages: i64,
pub total_clicks: i64,
pub active_links: i64,
pub dead_links: i64,
pub traffic_chart: String,
pub countries_chart: String,
pub browsers_chart: String,
pub referrers_chart: String,
}
impl IntoResponse for DashboardTemplate {
fn into_response(self) -> Response {
match self.render() {
Ok(html) => Html(html).into_response(),
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Render error: {}", e)).into_response(),
}
}
}
+33
View File
@@ -0,0 +1,33 @@
pub mod dashboard;
pub mod urls;
pub mod pages;
pub mod stats;
pub mod settings;
pub use dashboard::DashboardTemplate;
pub use urls::UrlsTemplate;
pub use pages::PagesTemplate;
pub use stats::{StatusTemplate, AuditTemplate};
pub use settings::SettingsTemplate;
use askama::Template;
use axum::{
response::{IntoResponse, Response, Html},
http::StatusCode,
};
#[derive(Template)]
#[template(path = "login.html")]
pub struct LoginTemplate {
pub error: Option<String>,
pub csrf_token: String,
}
impl IntoResponse for LoginTemplate {
fn into_response(self) -> Response {
match self.render() {
Ok(html) => Html(html).into_response(),
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Render error: {}", e)).into_response(),
}
}
}
+24
View File
@@ -0,0 +1,24 @@
use askama::Template;
use axum::{
response::{IntoResponse, Response, Html},
http::StatusCode,
};
use crate::models::LandingPage;
#[derive(Template)]
#[template(path = "pages.html")]
pub struct PagesTemplate {
pub admin_username: String,
pub pages: Vec<LandingPage>,
pub csrf_token: String,
pub error: Option<String>,
}
impl IntoResponse for PagesTemplate {
fn into_response(self) -> Response {
match self.render() {
Ok(html) => Html(html).into_response(),
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Render error: {}", e)).into_response(),
}
}
}
+26
View File
@@ -0,0 +1,26 @@
use askama::Template;
use axum::{
response::{IntoResponse, Response, Html},
http::StatusCode,
};
use crate::models::ApiKey;
#[derive(Template)]
#[template(path = "settings.html")]
pub struct SettingsTemplate {
pub admin_username: String,
pub api_keys: Vec<ApiKey>,
pub data_retention: String,
pub csrf_token: String,
pub success: Option<String>,
pub error: Option<String>,
}
impl IntoResponse for SettingsTemplate {
fn into_response(self) -> Response {
match self.render() {
Ok(html) => Html(html).into_response(),
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Render error: {}", e)).into_response(),
}
}
}
+44
View File
@@ -0,0 +1,44 @@
use askama::Template;
use axum::{
response::{IntoResponse, Response, Html},
http::StatusCode,
};
use crate::models::AuditLog;
#[derive(Template)]
#[template(path = "status_ui.html")]
pub struct StatusTemplate {
pub admin_username: String,
pub app_status: &'static str,
pub db_status: String,
pub queue_size: usize,
pub memory_usage: String,
pub uptime: String,
pub version: &'static str,
pub git_commit: &'static str,
}
#[derive(Template)]
#[template(path = "audit.html")]
pub struct AuditTemplate {
pub admin_username: String,
pub logs: Vec<AuditLog>,
}
impl IntoResponse for StatusTemplate {
fn into_response(self) -> Response {
match self.render() {
Ok(html) => Html(html).into_response(),
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Render error: {}", e)).into_response(),
}
}
}
impl IntoResponse for AuditTemplate {
fn into_response(self) -> Response {
match self.render() {
Ok(html) => Html(html).into_response(),
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Render error: {}", e)).into_response(),
}
}
}
+25
View File
@@ -0,0 +1,25 @@
use askama::Template;
use axum::{
response::{IntoResponse, Response, Html},
http::StatusCode,
};
use crate::models::Url;
#[derive(Template)]
#[template(path = "urls.html")]
pub struct UrlsTemplate {
pub admin_username: String,
pub urls: Vec<Url>,
pub csrf_token: String,
pub error: Option<String>,
pub tag_filter: Option<String>,
}
impl IntoResponse for UrlsTemplate {
fn into_response(self) -> Response {
match self.render() {
Ok(html) => Html(html).into_response(),
Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, format!("Render error: {}", e)).into_response(),
}
}
}