feat: initialize thoughts-frontend with Next.js, TypeScript, and ESLint
- Add ESLint configuration for Next.js and TypeScript support. - Create Next.js configuration file with standalone output option. - Initialize package.json with scripts for development, build, and linting. - Set up PostCSS configuration for Tailwind CSS. - Add SVG assets for UI components. - Create TypeScript configuration for strict type checking and module resolution.
This commit is contained in:
20
thoughts-backend/doc/src/blog.rs
Normal file
20
thoughts-backend/doc/src/blog.rs
Normal file
@@ -0,0 +1,20 @@
|
||||
use utoipa::OpenApi;
|
||||
|
||||
use models::params::blog::CreateBlogParams;
|
||||
use models::schemas::blog::{BlogListSchema, BlogSchema};
|
||||
|
||||
use api::models::{ApiErrorResponse, ParamsErrorResponse};
|
||||
use api::routers::blog::*;
|
||||
|
||||
#[derive(OpenApi)]
|
||||
#[openapi(
|
||||
paths(blogs_get, blogs_post),
|
||||
components(schemas(
|
||||
CreateBlogParams,
|
||||
BlogListSchema,
|
||||
BlogSchema,
|
||||
ApiErrorResponse,
|
||||
ParamsErrorResponse,
|
||||
))
|
||||
)]
|
||||
pub(super) struct BlogApi;
|
35
thoughts-backend/doc/src/lib.rs
Normal file
35
thoughts-backend/doc/src/lib.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
use axum::Router;
|
||||
use utoipa::OpenApi;
|
||||
use utoipa_scalar::{Scalar, Servable as ScalarServable};
|
||||
use utoipa_swagger_ui::SwaggerUi;
|
||||
|
||||
mod blog;
|
||||
mod root;
|
||||
mod user;
|
||||
|
||||
#[derive(OpenApi)]
|
||||
#[openapi(
|
||||
nest(
|
||||
(path = "/", api = root::RootApi),
|
||||
(path = "/users", api = user::UserApi),
|
||||
(path = "/blogs", api = blog::BlogApi),
|
||||
),
|
||||
tags(
|
||||
(name = "root", description = "Root API"),
|
||||
(name = "user", description = "User API"),
|
||||
(name = "blog", description = "Blog API"),
|
||||
|
||||
)
|
||||
)]
|
||||
struct _ApiDoc;
|
||||
|
||||
pub trait ApiDoc {
|
||||
fn attach_doc(self) -> Self;
|
||||
}
|
||||
|
||||
impl ApiDoc for Router {
|
||||
fn attach_doc(self) -> Self {
|
||||
self.merge(SwaggerUi::new("/docs").url("/openapi.json", _ApiDoc::openapi()))
|
||||
.merge(Scalar::with_url("/scalar", _ApiDoc::openapi()))
|
||||
}
|
||||
}
|
7
thoughts-backend/doc/src/root.rs
Normal file
7
thoughts-backend/doc/src/root.rs
Normal file
@@ -0,0 +1,7 @@
|
||||
use utoipa::OpenApi;
|
||||
|
||||
use api::routers::root::*;
|
||||
|
||||
#[derive(OpenApi)]
|
||||
#[openapi(paths(root_get))]
|
||||
pub(super) struct RootApi;
|
20
thoughts-backend/doc/src/user.rs
Normal file
20
thoughts-backend/doc/src/user.rs
Normal file
@@ -0,0 +1,20 @@
|
||||
use utoipa::OpenApi;
|
||||
|
||||
use models::params::user::CreateUserParams;
|
||||
use models::schemas::user::{UserListSchema, UserSchema};
|
||||
|
||||
use api::models::{ApiErrorResponse, ParamsErrorResponse};
|
||||
use api::routers::user::*;
|
||||
|
||||
#[derive(OpenApi)]
|
||||
#[openapi(
|
||||
paths(users_get, users_id_get, users_post),
|
||||
components(schemas(
|
||||
CreateUserParams,
|
||||
UserListSchema,
|
||||
UserSchema,
|
||||
ApiErrorResponse,
|
||||
ParamsErrorResponse,
|
||||
))
|
||||
)]
|
||||
pub(super) struct UserApi;
|
Reference in New Issue
Block a user