Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 239064f088 | |||
| 03de5cd2b4 | |||
| 09fe7cb557 | |||
| 57ff4c7b01 | |||
| 900973063a | |||
| c4450cb4e6 | |||
| 52c756e052 | |||
| aab3b357cf | |||
| aec1d53bcc | |||
| 1de9490540 | |||
| df28bb5dc6 | |||
| 35f80cf249 | |||
| cd2af612a2 | |||
| 088a1c3beb |
@@ -81,4 +81,3 @@ steps:
|
|||||||
trigger:
|
trigger:
|
||||||
event:
|
event:
|
||||||
- push
|
- push
|
||||||
- tag
|
|
||||||
|
|||||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.venv
|
||||||
|
.idea
|
||||||
16
Dockerfile
16
Dockerfile
@@ -8,13 +8,17 @@ LABEL description="Static documentation host for Aetoskia projects"
|
|||||||
# Copy custom Nginx configuration
|
# Copy custom Nginx configuration
|
||||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
|
||||||
# Copy all project docs
|
# Copy Index
|
||||||
# Expected folder layout (on build context):
|
|
||||||
# ./_index/
|
|
||||||
# ./mongo-ops/site/
|
|
||||||
COPY ./_index /usr/share/nginx/html/
|
COPY ./_index /usr/share/nginx/html/
|
||||||
COPY ./mongo-ops/site /usr/share/nginx/html/mongo-ops/
|
|
||||||
COPY ./blog-api/site /usr/share/nginx/html/api/blog/
|
# Copy Libs
|
||||||
|
COPY ./libs/mongo-ops/site /usr/share/nginx/html/libs/mongo-ops/
|
||||||
|
|
||||||
|
# Copy Apis
|
||||||
|
COPY ./apis/blog/site /usr/share/nginx/html/apis/blog/
|
||||||
|
|
||||||
|
# Copy Tutorials
|
||||||
|
COPY ./tutorials/media-manager/site /usr/share/nginx/html/tutorials/media-manager/
|
||||||
|
|
||||||
# Expose HTTP port
|
# Expose HTTP port
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|||||||
@@ -113,6 +113,17 @@
|
|||||||
<header>
|
<header>
|
||||||
<h1>Aetoskia Developer Docs</h1>
|
<h1>Aetoskia Developer Docs</h1>
|
||||||
<p>Central documentation hub for Aetoskia projects</p>
|
<p>Central documentation hub for Aetoskia projects</p>
|
||||||
|
<span style="
|
||||||
|
background: #30363d;
|
||||||
|
color: #fff;
|
||||||
|
padding: 3px 8px;
|
||||||
|
border-radius: 6px;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
font-weight: 600;
|
||||||
|
border: 1px solid #484f58;
|
||||||
|
">
|
||||||
|
Build: 0.1.6
|
||||||
|
</span>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
@@ -122,7 +133,26 @@
|
|||||||
A modular, async MongoDB operations layer for FastAPI microservices.
|
A modular, async MongoDB operations layer for FastAPI microservices.
|
||||||
Simplifies CRUD, transactions, and model management.
|
Simplifies CRUD, transactions, and model management.
|
||||||
</p>
|
</p>
|
||||||
<a href="/mongo-ops/">View Documentation →</a>
|
<a href="/libs/mongo-ops/" target="_blank">View Documentation →</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h2>Blog API</h2>
|
||||||
|
<p>
|
||||||
|
A modular, async Blog API backend for FastAPI microservices.
|
||||||
|
Provides streamlined CRUD operations for articles and authors, supports nested author details within article endpoints, and enables simple association management between content and contributors.
|
||||||
|
</p>
|
||||||
|
<a href="/apis/blog/" target="_blank">View Documentation →</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<h2>Media Manager Tutorial</h2>
|
||||||
|
<p>
|
||||||
|
Step-by-step guide to the Media Manager architecture, ingestion pipeline,
|
||||||
|
automation workflows, and integration with Radarr, Sonarr, and your custom
|
||||||
|
dashboard services.
|
||||||
|
</p>
|
||||||
|
<a href="/tutorials/media-manager/" target="_blank">View Tutorial →</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
File diff suppressed because it is too large
Load Diff
@@ -13,11 +13,11 @@
|
|||||||
"name": "MIT License",
|
"name": "MIT License",
|
||||||
"url": "https://opensource.org/licenses/MIT"
|
"url": "https://opensource.org/licenses/MIT"
|
||||||
},
|
},
|
||||||
"version": "0.0.4"
|
"version": "0.2.0"
|
||||||
},
|
},
|
||||||
"servers": [
|
"servers": [
|
||||||
{
|
{
|
||||||
"url": "https://api.aetoskia.com",
|
"url": "https://api.aetoskia.com/blogs",
|
||||||
"description": "Production server"
|
"description": "Production server"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -186,17 +186,18 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "Author Id"
|
"title": "Author Id"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "email",
|
|
||||||
"in": "query",
|
|
||||||
"required": true,
|
|
||||||
"schema": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "Email"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"requestBody": {
|
||||||
|
"required": true,
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/Author"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"200": {
|
||||||
"description": "Successful Response",
|
"description": "Successful Response",
|
||||||
@@ -491,6 +492,131 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/auth/register": {
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"summary": "Create User",
|
||||||
|
"operationId": "create_user_auth_register_post",
|
||||||
|
"requestBody": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/UserAuth"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Successful Response",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/PublicUser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"422": {
|
||||||
|
"description": "Validation Error",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/HTTPValidationError"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/auth/login": {
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"summary": "Login",
|
||||||
|
"operationId": "login_auth_login_post",
|
||||||
|
"requestBody": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/UserAuth"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Successful Response",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"422": {
|
||||||
|
"description": "Validation Error",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/HTTPValidationError"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/auth/me": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"summary": "Read Users Me",
|
||||||
|
"operationId": "read_users_me_auth_me_get",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Successful Response",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/PublicUser"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"security": [
|
||||||
|
{
|
||||||
|
"OAuth2PasswordBearer": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/auth/logout": {
|
||||||
|
"post": {
|
||||||
|
"tags": [
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"summary": "Logout",
|
||||||
|
"operationId": "logout_auth_logout_post",
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "Successful Response",
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/health": {
|
"/health": {
|
||||||
"get": {
|
"get": {
|
||||||
"summary": "Health Check",
|
"summary": "Health Check",
|
||||||
@@ -573,7 +699,8 @@
|
|||||||
"tag",
|
"tag",
|
||||||
"title",
|
"title",
|
||||||
"description",
|
"description",
|
||||||
"content"
|
"content",
|
||||||
|
"authors"
|
||||||
],
|
],
|
||||||
"title": "Article",
|
"title": "Article",
|
||||||
"example": {
|
"example": {
|
||||||
@@ -683,7 +810,15 @@
|
|||||||
"title": "Username"
|
"title": "Username"
|
||||||
},
|
},
|
||||||
"email": {
|
"email": {
|
||||||
"type": "string",
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"format": "email"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
"title": "Email"
|
"title": "Email"
|
||||||
},
|
},
|
||||||
"is_active": {
|
"is_active": {
|
||||||
@@ -692,20 +827,31 @@
|
|||||||
"default": true
|
"default": true
|
||||||
},
|
},
|
||||||
"name": {
|
"name": {
|
||||||
"type": "string",
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
"title": "Name"
|
"title": "Name"
|
||||||
},
|
},
|
||||||
"avatar": {
|
"avatar": {
|
||||||
"type": "string",
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
"title": "Avatar"
|
"title": "Avatar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"username",
|
"username"
|
||||||
"email",
|
|
||||||
"name",
|
|
||||||
"avatar"
|
|
||||||
],
|
],
|
||||||
"title": "Author",
|
"title": "Author",
|
||||||
"example": {
|
"example": {
|
||||||
@@ -726,6 +872,132 @@
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "HTTPValidationError"
|
"title": "HTTPValidationError"
|
||||||
},
|
},
|
||||||
|
"PublicUser": {
|
||||||
|
"properties": {
|
||||||
|
"_id": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"507f1f77bcf86cd799439011"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Id"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"title": "Created At"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"title": "Updated At"
|
||||||
|
},
|
||||||
|
"username": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 50,
|
||||||
|
"minLength": 3,
|
||||||
|
"title": "Username"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"format": "email"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Email"
|
||||||
|
},
|
||||||
|
"is_active": {
|
||||||
|
"type": "boolean",
|
||||||
|
"title": "Is Active",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"username"
|
||||||
|
],
|
||||||
|
"title": "PublicUser",
|
||||||
|
"example": {
|
||||||
|
"created_at": "2024-01-01T00:00:00",
|
||||||
|
"updated_at": "2024-01-01T00:00:00"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"UserAuth": {
|
||||||
|
"properties": {
|
||||||
|
"_id": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"507f1f77bcf86cd799439011"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Id"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"title": "Created At"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "date-time",
|
||||||
|
"title": "Updated At"
|
||||||
|
},
|
||||||
|
"username": {
|
||||||
|
"type": "string",
|
||||||
|
"maxLength": 50,
|
||||||
|
"minLength": 3,
|
||||||
|
"title": "Username"
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"format": "email"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "null"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Email"
|
||||||
|
},
|
||||||
|
"is_active": {
|
||||||
|
"type": "boolean",
|
||||||
|
"title": "Is Active",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 6,
|
||||||
|
"title": "Password"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"username",
|
||||||
|
"password"
|
||||||
|
],
|
||||||
|
"title": "UserAuth",
|
||||||
|
"example": {
|
||||||
|
"created_at": "2024-01-01T00:00:00",
|
||||||
|
"updated_at": "2024-01-01T00:00:00"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ValidationError": {
|
"ValidationError": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"loc": {
|
"loc": {
|
||||||
@@ -759,6 +1031,17 @@
|
|||||||
],
|
],
|
||||||
"title": "ValidationError"
|
"title": "ValidationError"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"securitySchemes": {
|
||||||
|
"OAuth2PasswordBearer": {
|
||||||
|
"type": "oauth2",
|
||||||
|
"flows": {
|
||||||
|
"password": {
|
||||||
|
"scopes": {},
|
||||||
|
"tokenUrl": "/auth/login"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tags": [
|
"tags": [
|
||||||
1
apis/blog/site/search/search_index.json
Normal file
1
apis/blog/site/search/search_index.json
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user