diff --git a/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/api.py b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/api.py index ca1b1176df..ddceb64d0c 100644 --- a/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/api.py +++ b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/api.py @@ -4,9 +4,11 @@ login, users, proxy, + services, ) api_router = APIRouter() api_router.include_router(login.router, prefix="/login", tags=["login"]) api_router.include_router(users.router, prefix="/users", tags=["users"]) api_router.include_router(proxy.router, prefix="/proxy", tags=["proxy"]) +api_router.include_router(services.router, prefix="/service", tags=["service"]) diff --git a/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/services.py b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/services.py new file mode 100644 index 0000000000..f0cde93c17 --- /dev/null +++ b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/services.py @@ -0,0 +1,18 @@ +from typing import Any + +from fastapi import APIRouter + +from app import schemas +from app.utilities import send_web_contact_email +from app.schemas import EmailContent + +router = APIRouter() + + +@router.post("/contact", response_model=schemas.Msg, status_code=201) +def send_email(*, data: EmailContent) -> Any: + """ + Standard app contact us. + """ + send_web_contact_email(data=data) + return {"msg": "Web contact email sent"} diff --git a/{{cookiecutter.project_slug}}/frontend/api/index.ts b/{{cookiecutter.project_slug}}/frontend/api/index.ts index 840fc3ec19..a9165df67a 100644 --- a/{{cookiecutter.project_slug}}/frontend/api/index.ts +++ b/{{cookiecutter.project_slug}}/frontend/api/index.ts @@ -1,4 +1,5 @@ import { apiCore } from "./core" import { apiAuth } from "./auth" +import { apiService } from "./services" -export { apiCore, apiAuth } \ No newline at end of file +export { apiCore, apiAuth, apiService } \ No newline at end of file diff --git a/{{cookiecutter.project_slug}}/frontend/api/services.ts b/{{cookiecutter.project_slug}}/frontend/api/services.ts new file mode 100644 index 0000000000..e2ef96c63d --- /dev/null +++ b/{{cookiecutter.project_slug}}/frontend/api/services.ts @@ -0,0 +1,14 @@ +import { ISendEmail, IMsg } from "@/interfaces" +import { apiCore } from "./core" + +export const apiService = { + // USER CONTACT MESSAGE + async postEmailContact(data: ISendEmail) { + return await useFetch(`${apiCore.url()}/service/contact`, + { + method: "POST", + body: data, + } + ) + }, +} \ No newline at end of file diff --git a/{{cookiecutter.project_slug}}/frontend/components/layouts/default/Footer.vue b/{{cookiecutter.project_slug}}/frontend/components/layouts/default/Footer.vue index 812272eb4f..526d8f76cb 100644 --- a/{{cookiecutter.project_slug}}/frontend/components/layouts/default/Footer.vue +++ b/{{cookiecutter.project_slug}}/frontend/components/layouts/default/Footer.vue @@ -25,6 +25,7 @@ const footerNavigation = { { name: "About", to: "/about" }, { name: "Authentication", to: "/authentication" }, { name: "Blog", to: "/blog" }, + { name: "Contact", to: "/contact" }, ], social: [ { diff --git a/{{cookiecutter.project_slug}}/frontend/pages/contact.vue b/{{cookiecutter.project_slug}}/frontend/pages/contact.vue new file mode 100644 index 0000000000..f9b4c44160 --- /dev/null +++ b/{{cookiecutter.project_slug}}/frontend/pages/contact.vue @@ -0,0 +1,125 @@ + + +