All Projects → ais-one → Vue Crud X

ais-one / Vue Crud X

Licence: mit
Vue+Express Cookbook & CRUD Component (with Vite and Web Components)

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Vue Crud X

cookbook
VueJS + NodeJS Evergreen Cookbook
Stars: ✭ 440 (+11.96%)
Mutual labels:  crud, rxjs, web-components, gcp, openapi, 2fa
Node Express Mongodb Jwt Rest Api Skeleton
This is a basic API REST skeleton written on JavaScript using async/await. Great for building a starter web API for your front-end (Android, iOS, Vue, react, angular, or anything that can consume an API). Demo of frontend in VueJS here: https://github.com/davellanedam/vue-skeleton-mvp
Stars: ✭ 603 (+53.44%)
Mutual labels:  rest, express, jwt
Swagger Ui
Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.
Stars: ✭ 21,279 (+5314.5%)
Mutual labels:  rest, openapi, hacktoberfest
Pode
Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers
Stars: ✭ 329 (-16.28%)
Mutual labels:  rest, openapi, hacktoberfest
Netcoreblockly
.NET Core API to Blockly - generate from WebAPI, Swagger, OData, GraphQL =>
Stars: ✭ 121 (-69.21%)
Mutual labels:  openapi, hacktoberfest, jwt
Goa
Design-based APIs and microservices in Go
Stars: ✭ 4,493 (+1043.26%)
Mutual labels:  rest, hacktoberfest, openapi
Openapi Spring Webflux Validator
🌱 A friendly kotlin library to validate API endpoints using an OpenApi 3.0 and Swagger 2.0 specification
Stars: ✭ 67 (-82.95%)
Mutual labels:  rest, openapi, hacktoberfest
Openapi Backend
Build, Validate, Route, Authenticate and Mock using OpenAPI
Stars: ✭ 216 (-45.04%)
Mutual labels:  openapi, hacktoberfest, express
Golang Gin Realworld Example App
Exemplary real world application built with Golang + Gin
Stars: ✭ 1,780 (+352.93%)
Mutual labels:  rest, crud, jwt
Node Express Mongoose Passport Jwt Rest Api Auth
Node, express, mongoose, passport and JWT REST API authentication example
Stars: ✭ 146 (-62.85%)
Mutual labels:  rest, express, jwt
Loopback Next
LoopBack makes it easy to build modern API applications that require complex integrations.
Stars: ✭ 3,972 (+910.69%)
Mutual labels:  rest, openapi, hacktoberfest
Express Openapi Validator
🦋 Auto-validates api requests, responses, and securities using ExpressJS and an OpenAPI 3.x specification
Stars: ✭ 436 (+10.94%)
Mutual labels:  openapi, hacktoberfest, express
Openapi Generator
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
Stars: ✭ 10,634 (+2605.85%)
Mutual labels:  rest, openapi, hacktoberfest
Foal
Elegant and all-inclusive Node.Js web framework based on TypeScript. 🚀.
Stars: ✭ 1,176 (+199.24%)
Mutual labels:  rest, express, jwt
Flama
🔥 Fire up your API with this flamethrower
Stars: ✭ 161 (-59.03%)
Mutual labels:  rest, openapi, crud
Mockoon
Mockoon is the easiest and quickest way to run mock APIs locally. No remote deployment, no account required, open source.
Stars: ✭ 3,448 (+777.35%)
Mutual labels:  rest, openapi, hacktoberfest
Grant
OAuth Proxy
Stars: ✭ 3,509 (+792.88%)
Mutual labels:  gcp, express
Laravel Packer
Awesome Command Line Tool for speeding up your package creation.
Stars: ✭ 313 (-20.36%)
Mutual labels:  hacktoberfest, crud
Flask Appbuilder
Simple and rapid application development framework, built on top of Flask. includes detailed security, auto CRUD generation for your models, google charts and much more. Demo (login with guest/welcome) - http://flaskappbuilder.pythonanywhere.com/
Stars: ✭ 3,603 (+816.79%)
Mutual labels:  rest, crud
Graphback
Graphback - Out of the box GraphQL server and client
Stars: ✭ 323 (-17.81%)
Mutual labels:  hacktoberfest, crud

master commit release npm version npm Sonarcloud Status Known Vulnerabilities MadeWithVueJs.com shield

TL;DR ExpressJS & VueJS Web App Cookbook, Customisable CRUD Library, CI/CD, Cloud Container Deployment, Web Components, ES Modules

Latest Version 0.4.8 - Released 2021 Mar 06 1220 +8GMT

  • urgent fix for example-native, add rxjs to example-vite

Features

  • SPA, ES Modules, Vue3 & Bulma: No bundler, scalable VueJS Application, example codes (signed uploads, JWT refresh token, OTP), recaptcha, Github OAuth2 login, Web component table, form & CRUD backend (files to note)
    • example-app/router/tables/. - table configurations
    • example-app/router/t4t.js - handle backend CRUD API
    • @es-labs/esm/t4t-fe.js - frontend operations to interact with t4t.js
    • @es-labs/esm/t4t-validate.js - validation used by both front and backend
    • @es-labs/esm/bwc-table - used to display table
    • @es-labs/esm/bwc-t4t-form.js - form generated from table configurations
    • example-native/views/ui1.js - autcomplete, combobox, file upload example
    • example-native/views/ui2.js - table example
    • example-native/views/ui3.js - form example (with connection to backend)
    • example-native/views/ui4.js - table and form example (with connection to backend)
  • SPA, Vite, Vue3 & Ant Design Vue: Web Components, Leaflet Map, ECharts, Webcam, Signature canvas, PWA, JWT refresh token, 2FA GA OTP, SAML, Websockets, GraphQL, rxjs
  • SPA, Vue-cli, Vue2 & Vuetify: Graphql (subscriptions, cache, optimistic UI, refetch queries), REST, VueCrudX, i18n, RxJS
  • Express JS Backend
    • Cors, proxy middleware, helmet, error handling, logging, OpenAPI
    • Objection ORM, Knex, MongoDb, Relational DB data example, migration, seed, GraphQL, Redis
    • Webpush & FCM push notification, Sendgrid email, Nexmo SMS, Telegram
    • AgendaJS message queue
    • File uploads, Signed URL file upload to GCP Storage
    • Websockets, graphql
    • JWT using RSA, JWT refresh token, token in HttpOnly cookies, GA OTP, role, Passport SAML
    • Unit Test & Integration Test
  • Github Actions - Manual Trigger
  • Docker setups for Mongodb, Mysql, SAML IDP, Kafka, Hashicorp Vault
  • Secrets
  • Documentation: always work in progress and to be improved
  • AMP Website: AMP (Accelerated Mobile Page) application sample (TBD)

QUICK START - ON YOUR LOCAL MACHINE

Requirements

  • NodeJS LTS
  • For Windows, integrate bash shell to cmd shell (when installing git), or use git-bash
  • Docker (easier to use VS Code Docker plugin)

Download

# clone repo and install backend
git clone https://github.com/ais-one/vue-crud-x.git
cd vue-crud-x

ExpressJS Backend Setup & Run - development environment

# install
cd example-app
npm i
npm i ../@es-labs/esm
npm i ../@es-labs/node

NOTES

  • MongoDB examples needs MongoDB to work. To resolve, chose one of the methods to install MongoDB in docs/mongodb/install.md
  • The example-app/config/secret/*.env,js files are not present. So there maybe some console log errors (but it is ok to ignore), graphql and websockets will not work. Quick start is still usable. Use the README.md to fill up

Run migration & app

# create and seed relational db on SQLite, (delete the dev.sqlite file each time before you run this)
# command: npm run knex -- <development / uat / production> <seed / migrate>
npm run knex -- development migrate
npm run knex -- development seed

# create and seed MongoDB requires MongoDB - you can skip this but MongoDB examples will not work
# command: npm run mongo -- <development / uat / production> <seed / update>
npm run mongo -- development seed

# run the backend
# command: npm run app -- <development / uat / production>
npm run app -- development

# or npm run app:lint to include eslint checks

# Command to simulate long running process (do take note of caveats, for production need a monitor to handle restart strategy)
# command: npm run process-long -- development
npm run process-long

# Command to simulate process triggered by cron (**NOTE:** may be better to use cron to call API than trigger a process)
# command: npm run process-cron -- development
npm run process-cron

Visit the following URLs

No bundler frontend

See native app above

Testing

  • To run unit & integration test on /api/authors. E2E testing is Work In Progress
  • TO TEST EVERYTHING PLEASE change describe.only(...) to describe(...) in the test scripts in example-app/tests
# run in development only
npm run test

Vite SPA Setup & Run - development environment

Why Use Vite

For Push Notification

  • using Google FCM, setup your firebase account and messaging, also setup FCM server key in backend
  • using self hosted webpush is also supported and available
cd example-vite
npm i
npm run dev

Navigate to http://127.0.0.1:8080/ to view application

Login using the following:

  • User: test
  • Password: test
  • OTP (if enabled - e.g. USE_OTP=TEST): use 111111 as otp pin

You can test PWA Push notifications using Webpush or FCM () on Dashboard page depending on .env. file configuration (need to be on 127.0.0.1).

Click the following buttons in order (see their output in console.log and screen):

  • sub PN (subscribe)
  • Test PN (send a test message to user id 1 - on sqlite)
  • Unsub PN (unsubscribe)

Vite SPA - static build

cd example-vite
npm run dev:build # build into example app, development environment
npm run build-uat # build uat environment, deploy to GCP Storage

Navigate to http://127.0.0.1:3000/vite/

Webpack SPA Setup & Run - development environment - TO DEPRECATE

cd example-webpack
npm i
npm run serve

Navigate to http://127.0.0.1:8080/webpack to view application with VueCrudX demo

Login is same as Vite SPA


Why No SSR or SSG

SAML

Refer to link below on how to try out...


Configuration

The example-app/config/ folder contains the config information.

You can override the configurations using <NODE_ENV>.env.js files, e.g. development.env.js or uat.env.js in example-app/config

If too many config properties, split it to other more and files


Project Strcuture

vue-crud-x
+- .github/ : github related CICD and automations
+- @es-labs/
|  +- esm/ : [shared es modules]
|     +- package.json
|  +- node/ : [shared cjs modules]
|     +- auth/ : authentication
|     +- comms/ : messaging
|     +- services/ : db
|     +- config.default.js: defaults
|     +- config.js: config loader
|     +- package.json
+- docker-devenv/ : docker for development environment
+- docs/ : documentation
+- example-amp/ : AMP example (TBD)
+- example-app/ : [example backend] - See example-app/README.md for Project Structure
|  +- common-express/ : common codes used in express apps
+- example-native/ : frontend (Vue3 no bundle) - See example-native/README.md for Project Structure
+- example-vite/ : frontend (Vue3 rollup) - See example-vite/README.md for Project Structure
|  +- lib/esm-rollup/ : rolled up components for frontend (e.g. apollo.js)
+- example-webpack/ : frontend associated to the backend (Vue2 webpack) - See example-webpack/README.md for Project Structure
|  +- lib/webpacked/ : webpacked components for frontend (e.g. VueCrudX.vue)
+- k8s/ : kubernetes YAML files (WIP)
+- .editorconfig
+- .gitignore
+- BACKLOG.md
+- CHANGELOG.md
+- LICENCE
+- package.json
+- README.md
+- rest-cmd.http : rest commands for testing

CI/CD

Using github actions

Manually triggered deployment on .github/workflows/manual.yml

selectable inputs

  • environment (uat for now, development does not deploy anything)
  • application (example-app, example-vite)
  • code branch

NOTE config/secret contents will not be in repo for CI/CD (so you can get errors), those should be put in VAULT

current secrets

  • GCP_PROJECT_ID
  • GCP_SA_KEY
  • VAULT_uat, passed in as VAULT
# do not merge
VAULT="unused"

# connect to a hashicorp vault and obtain secrets to merge
VAULT={ url, token } # base64 encoded

 # pass in secrets, this way is insecure and not a good way to send in secrets
VAULT={ secrets: { ... all your secrets here } } # base64 encoded

DOCUMENTATION

VERSION CHANGE NOTES

  • v0.4+ Improve folders and structure organization, handle CI/CD better
  • v0.3+ Reorganize folders and structure, for ease of developing and maintaining multiple applications.
  • v0.2+ uses Vuetify 2. Due to many breaking changes from Vuetify 1 to 2, CRUD component code was refactored to be more UI framework agnostic (reduce dependencies!), easier to use, improving code quality, documentation and supprting article - VueJS+ExpressJS CRUD & Cookbook
  • v0.1 and Vuetify 1 will be supported under the v1 branch. You can refer to the v1 Legacy Article (For Historical Reference)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].