Git Product home page Git Product logo

fastapi_best_architecture_ui's Introduction

FastAPI Best Architecture UI

Front-end Implementation of the FastAPI Best Architecture

Some basic functionality has been implemented, development has been slow, please keep in mind that at the moment it is only intended as a demo of the effect and not for production!

Fortunately, we now have a demo site: FBA UI

Note

Use casbin authorization internally instead of role menu authorization

Run

yarn install
yarn dev

Build

yarn build

Screenshots

login login log
dept manage user manage
api manage role manage
menu manage redis monitor
server monitor

Contributors

Special thanks

Interactivity

WeChat / QQ

Sponsor us

If this program has helped you, you can sponsor us with some coffee beans: ☕ Sponsor ☕

License

This project is licensed under the terms of the MIT license

fastapi_best_architecture_ui's People

Contributors

arterning avatar downdawn avatar wu-clan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fastapi_best_architecture_ui's Issues

TODO

  • dictionary management
  • dynamic configuration
  • password reset
  • user registration

Authorization issues

There are two options for permissions.

  1. casbin
  2. menu permission

One of these can be implemented first, casbin does not require a lot of code changes

Also the implementation may control the authorization rules through variables and display the page through v-if, but there is a point where the menu permission field will be fixed to display and you can add a hint note through v-if

Component refresh exceptions

There seems to be a problem with the routing subscription mode, where components are not automatically updated when switching pages, but are rendered only after refreshing the interface

Code cleanup

Code cleanup records.

Includes, but is not limited to, the following:

  • Browser page header
  • Login page title
  • Footer content
  • mock data page
  • redundant menu
  • redundant code

BUG: Menu hide exception

When the parent menu is set to not display, the menu will be displayed if the submenu is set to display

Expectations:

If the submenu is set to display and the parent menu is set to not display, the submenu should not be displayed unless the parent menu is set to display

build exception

v-model === v-model:model-value

only one can be kept:v-model

image

Error message alert exception

Error message prompts sometimes display content other than that returned by the backend

and can also cause unexpected cross-domain errors

error when npm or yarn run dev

image image ``` PS C:\dev\fastapi_best_architecture_ui> yarn run dev yarn run v1.22.19 $ vite --config ./config/vite.config.dev.ts

VITE v3.2.7 ready in 1140 ms

➜ Local: http://127.0.0.1:5173/
➜ Network: use --host to expose
✘ [ERROR] [plugin vite:dep-pre-bundle] Failed to resolve entry for package "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." entry in "@intlify/shared" package

node_modules/vite/node_modules/esbuild/lib/main.js:1336:21:
  1336 │         let result = await callback({
       ╵                      ^

at packageEntryFailure (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34107:11)
at resolvePackageEntry (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34102:9)
at tryNodeResolve (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:33842:20)
at Context.resolveId (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:33602:28)
at Object.resolveId (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:40539:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:62784:21
at async file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34422:34
at async requestCallbacks.on-resolve (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1336:22)
at async handleRequest (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:706:13)

This error came from the "onResolve" callback registered here:

node_modules/vite/node_modules/esbuild/lib/main.js:1260:20:
  1260 │       let promise = setup({
       ╵                     ^

at setup (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34402:19)
at handlePlugins (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1260:21)
at buildOrServeImpl (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:951:5)
at Object.buildOrServe (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:759:5)
at C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:2096:17
at new Promise (<anonymous>)
at Object.build (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:2095:14)
at build (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1942:51)
at runOptimizeDeps (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:41890:26)

The plugin "vite:dep-pre-bundle" was triggered by this import

node_modules/vue-i18n/dist/vue-i18n.cjs:8:21:
  8 │ var shared = require('@intlify/shared');
    ╵                      ~~~~~~~~~~~~~~~~~

C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1575
let error = new Error(${text}${summary});
^

Error: Build failed with 1 error:
node_modules/vite/node_modules/esbuild/lib/main.js:1336:21: ERROR: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." entry in "@intlify/shared" package
at failureErrorWithLog (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1575:15)
at C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1033:28
at runOnEndCallbacks (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1447:61)
at buildResponseToResult (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1031:7)
at C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1143:14
at responseCallbacks. (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:680:9)
at handleIncomingPacket (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:735:9)
at Socket.readFromStdout (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:656:7)
at Socket.emit (node:events:513:28)
at addChunk (node:internal/streams/readable:315:12) {
errors: [
{
detail: Error: Failed to resolve entry for package "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." entry in "@intlify/shared" package
at packageEntryFailure (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34107:11)
at resolvePackageEntry (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34102:9)
at tryNodeResolve (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:33842:20)
at Context.resolveId (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:33602:28)
at Object.resolveId (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:40539:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:62784:21
at async file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34422:34
at async requestCallbacks.on-resolve (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1336:22)
at async handleRequest (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:706:13),
id: '',
location: {
column: 21,
file: 'node_modules/vite/node_modules/esbuild/lib/main.js',
length: 0,
line: 1336,
lineText: ' let result = await callback({\n' +
' at packageEntryFailure (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34107:11)\n' +
' at resolvePackageEntry (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34102:9)\n' +
' at tryNodeResolve (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:33842:20)\n' +
' at Context.resolveId (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:33602:28)\n' +
' at Object.resolveId (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:40539:46)\n' +
' at processTicksAndRejections (node:internal/process/task_queues:96:5)\n' +
' at async file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:62784:21\n' +
' at async file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34422:34\n' +
' at async requestCallbacks.on-resolve (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1336:22)\n' +
' at async handleRequest (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:706:13)',
namespace: 'file',
suggestion: ''
},
notes: [
{
location: {
column: 20,
file: 'node_modules/vite/node_modules/esbuild/lib/main.js',
length: 0,
line: 1260,
lineText: ' let promise = setup({\n' +
' at setup (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:34402:19)\n' +
' at handlePlugins (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1260:21)\n' +
' at buildOrServeImpl (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:951:5)\n' +
' at Object.buildOrServe (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:759:5)\n' +
' at C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:2096:17\n' +
' at new Promise ()\n' +
' at Object.build (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:2095:14)\n' +
' at build (C:\dev\fastapi_best_architecture_ui\node_modules\vite\node_modules\esbuild\lib\main.js:1942:51)\n' +
' at runOptimizeDeps (file:///C:/dev/fastapi_best_architecture_ui/node_modules/vite/dist/node/chunks/dep-2faf2534.js:41890:26)',
namespace: 'file',
suggestion: ''
},
text: 'This error came from the "onResolve" callback registered here:'
},
{
location: {
column: 21,
file: 'node_modules/vue-i18n/dist/vue-i18n.cjs',
length: 17,
line: 8,
lineText: "var shared = require('@intlify/shared');",
namespace: '',
suggestion: ''
},
text: 'The plugin "vite:dep-pre-bundle" was triggered by this import'
}
],
pluginName: 'vite:dep-pre-bundle',
text: 'Failed to resolve entry for package "@intlify/shared". The package may have incorrect main/module/exports specified in its package.json: No known conditions for "." entry in "@intlify/shared" package'
}
],
warnings: []
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

报错

image
这里没有做好中英文匹配

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.