├── LICENSE
├── README.md
├── api
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── README.md
├── nest-cli.json
├── package-lock.json
├── package.json
├── src
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
├── tsconfig.build.json
└── tsconfig.json
└── ui
├── .editorconfig
├── .gitignore
├── README.md
├── assets
└── variables.scss
├── components
├── NuxtLogo.vue
├── Tutorial.vue
└── VuetifyLogo.vue
├── jsconfig.json
├── layouts
├── default.vue
└── error.vue
├── nuxt.config.js
├── package-lock.json
├── package.json
├── pages
├── index.vue
└── inspire.vue
├── static
├── favicon.ico
├── v.png
└── vuetify-logo.svg
└── store
└── README.md
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Eddie Jaoude
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FullStack App with NuxtJS, NestJS and DataStax
2 |
3 | Building a fullstack app is hard, but it does not have to be difficult. We will build the frontend and a backend that connects to a real database using NuxtJS (vuejs), NestJS (expressjs) and DataStax NoSQL serverless db.
4 |
5 | I will do another video soon using NextJS which is a ReactJS framework. Any other tools you would like me to try? Maybe Angular, Svelte or Ionic ...?
6 |
7 | - DataStax's AstraDB NoSQL serverless (free) http://links.eddiejaoude.io/t/Q1cmdCP...
8 | - NuxtJS a framework for VueJS a frontend library http://nuxtjs.org
9 | - NestJS a framework for ExpressJS to create RESTful APIs http://nestjs.com
10 |
11 | This project was built for a YouTube video https://www.youtube.com/watch?v=TbUpYeLn6SI&lc=Ugx2B9M8KvUKrmNJi0l4AaABAg
12 |
--------------------------------------------------------------------------------
/api/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | project: 'tsconfig.json',
5 | sourceType: 'module',
6 | },
7 | plugins: ['@typescript-eslint/eslint-plugin'],
8 | extends: [
9 | 'plugin:@typescript-eslint/recommended',
10 | 'plugin:prettier/recommended',
11 | ],
12 | root: true,
13 | env: {
14 | node: true,
15 | jest: true,
16 | },
17 | ignorePatterns: ['.eslintrc.js'],
18 | rules: {
19 | '@typescript-eslint/interface-name-prefix': 'off',
20 | '@typescript-eslint/explicit-function-return-type': 'off',
21 | '@typescript-eslint/explicit-module-boundary-types': 'off',
22 | '@typescript-eslint/no-explicit-any': 'off',
23 | },
24 | };
25 |
--------------------------------------------------------------------------------
/api/.gitignore:
--------------------------------------------------------------------------------
1 | # compiled output
2 | /dist
3 | /node_modules
4 |
5 | # Logs
6 | logs
7 | *.log
8 | npm-debug.log*
9 | yarn-debug.log*
10 | yarn-error.log*
11 | lerna-debug.log*
12 |
13 | # OS
14 | .DS_Store
15 |
16 | # Tests
17 | /coverage
18 | /.nyc_output
19 |
20 | # IDEs and editors
21 | /.idea
22 | .project
23 | .classpath
24 | .c9/
25 | *.launch
26 | .settings/
27 | *.sublime-workspace
28 |
29 | # IDE - VSCode
30 | .vscode/*
31 | !.vscode/settings.json
32 | !.vscode/tasks.json
33 | !.vscode/launch.json
34 | !.vscode/extensions.json
35 |
36 | .env
37 |
--------------------------------------------------------------------------------
/api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/api/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | [circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
6 | [circleci-url]: https://circleci.com/gh/nestjs/nest
7 |
8 | A progressive Node.js framework for building efficient and scalable server-side applications.
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
24 |
25 | ## Description
26 |
27 | [Nest](https://github.com/nestjs/nest) framework TypeScript starter repository.
28 |
29 | ## Installation
30 |
31 | ```bash
32 | $ npm install
33 | ```
34 |
35 | ## Running the app
36 |
37 | ```bash
38 | # development
39 | $ npm run start
40 |
41 | # watch mode
42 | $ npm run start:dev
43 |
44 | # production mode
45 | $ npm run start:prod
46 | ```
47 |
48 | ## Test
49 |
50 | ```bash
51 | # unit tests
52 | $ npm run test
53 |
54 | # e2e tests
55 | $ npm run test:e2e
56 |
57 | # test coverage
58 | $ npm run test:cov
59 | ```
60 |
61 | ## Support
62 |
63 | Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).
64 |
65 | ## Stay in touch
66 |
67 | - Author - [Kamil Myśliwiec](https://kamilmysliwiec.com)
68 | - Website - [https://nestjs.com](https://nestjs.com/)
69 | - Twitter - [@nestframework](https://twitter.com/nestframework)
70 |
71 | ## License
72 |
73 | Nest is [MIT licensed](LICENSE).
74 |
--------------------------------------------------------------------------------
/api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "collection": "@nestjs/schematics",
3 | "sourceRoot": "src"
4 | }
5 |
--------------------------------------------------------------------------------
/api/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "api",
3 | "version": "0.0.1",
4 | "description": "",
5 | "author": "",
6 | "private": true,
7 | "license": "UNLICENSED",
8 | "scripts": {
9 | "prebuild": "rimraf dist",
10 | "build": "nest build",
11 | "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
12 | "start": "nest start",
13 | "start:dev": "nest start --watch",
14 | "start:debug": "nest start --debug --watch",
15 | "start:prod": "node dist/main",
16 | "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
17 | "test": "jest",
18 | "test:watch": "jest --watch",
19 | "test:cov": "jest --coverage",
20 | "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
21 | "test:e2e": "jest --config ./test/jest-e2e.json"
22 | },
23 | "dependencies": {
24 | "@astrajs/collections": "^0.1.0",
25 | "@nestjs/common": "^7.6.15",
26 | "@nestjs/config": "^1.0.0",
27 | "@nestjs/core": "^7.6.15",
28 | "@nestjs/platform-express": "^7.6.15",
29 | "reflect-metadata": "^0.1.13",
30 | "rimraf": "^3.0.2",
31 | "rxjs": "^6.6.6"
32 | },
33 | "devDependencies": {
34 | "@nestjs/cli": "^7.6.0",
35 | "@nestjs/schematics": "^7.3.0",
36 | "@nestjs/testing": "^7.6.15",
37 | "@types/express": "^4.17.11",
38 | "@types/jest": "^26.0.22",
39 | "@types/node": "^14.14.36",
40 | "@types/supertest": "^2.0.10",
41 | "@typescript-eslint/eslint-plugin": "^4.19.0",
42 | "@typescript-eslint/parser": "^4.19.0",
43 | "eslint": "^7.22.0",
44 | "eslint-config-prettier": "^8.1.0",
45 | "eslint-plugin-prettier": "^3.3.1",
46 | "jest": "^26.6.3",
47 | "prettier": "^2.2.1",
48 | "supertest": "^6.1.3",
49 | "ts-jest": "^26.5.4",
50 | "ts-loader": "^8.0.18",
51 | "ts-node": "^9.1.1",
52 | "tsconfig-paths": "^3.9.0",
53 | "typescript": "^4.2.3"
54 | },
55 | "jest": {
56 | "moduleFileExtensions": [
57 | "js",
58 | "json",
59 | "ts"
60 | ],
61 | "rootDir": "src",
62 | "testRegex": ".*\\.spec\\.ts$",
63 | "transform": {
64 | "^.+\\.(t|j)s$": "ts-jest"
65 | },
66 | "collectCoverageFrom": [
67 | "**/*.(t|j)s"
68 | ],
69 | "coverageDirectory": "../coverage",
70 | "testEnvironment": "node"
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/api/src/app.controller.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import { AppController } from './app.controller';
3 | import { AppService } from './app.service';
4 |
5 | describe('AppController', () => {
6 | let appController: AppController;
7 |
8 | beforeEach(async () => {
9 | const app: TestingModule = await Test.createTestingModule({
10 | controllers: [AppController],
11 | providers: [AppService],
12 | }).compile();
13 |
14 | appController = app.get(AppController);
15 | });
16 |
17 | describe('root', () => {
18 | it('should return "Hello World!"', () => {
19 | expect(appController.getHello()).toBe('Hello World!');
20 | });
21 | });
22 | });
23 |
--------------------------------------------------------------------------------
/api/src/app.controller.ts:
--------------------------------------------------------------------------------
1 | import { Body, Controller, Get, Post } from '@nestjs/common';
2 | import { AppService } from './app.service';
3 |
4 | @Controller()
5 | export class AppController {
6 | constructor(private readonly appService: AppService) {}
7 |
8 | @Get()
9 | getHello(): string {
10 | return this.appService.getHello();
11 | }
12 |
13 | @Get('members')
14 | getMembers() {
15 | return this.appService.getMembers();
16 | }
17 |
18 | @Post('members')
19 | postMember(@Body() member: any) {
20 | return this.appService.postMember(member);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/api/src/app.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { ConfigModule } from '@nestjs/config';
3 | import { AppController } from './app.controller';
4 | import { AppService } from './app.service';
5 |
6 | @Module({
7 | imports: [ConfigModule.forRoot()],
8 | controllers: [AppController],
9 | providers: [AppService],
10 | })
11 | export class AppModule {}
12 |
--------------------------------------------------------------------------------
/api/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 | import { createClient } from '@astrajs/collections';
3 |
4 | @Injectable()
5 | export class AppService {
6 | getHello(): string {
7 | return 'Hello EddieHub!';
8 | }
9 |
10 | async getClient() {
11 | const astraClient = await createClient({
12 | astraDatabaseId: process.env.ASTRA_DATABASE_ID,
13 | astraDatabaseRegion: process.env.ASTRA_DATABASE_REGION,
14 | applicationToken: process.env.ASTRA_APPLICATION_TOKEN,
15 | });
16 |
17 | return astraClient.namespace('NextJS').collection('members');
18 | }
19 |
20 | async getMembers() {
21 | const collection = await this.getClient();
22 | const members = await collection.find({});
23 |
24 | return Object.keys(members).map((key) => {
25 | return {
26 | id: key,
27 | ...members[key],
28 | };
29 | });
30 | }
31 |
32 | async postMember(member: any) {
33 | const collection = await this.getClient();
34 | const result = await collection.create({
35 | name: member.name,
36 | location: member.location,
37 | github: member.github,
38 | });
39 |
40 | return {
41 | id: result.documentId,
42 | ...member,
43 | };
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/api/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { AppModule } from './app.module';
3 |
4 | async function bootstrap() {
5 | const app = await NestFactory.create(AppModule);
6 | app.enableCors();
7 | await app.listen(3001);
8 | }
9 | bootstrap();
10 |
--------------------------------------------------------------------------------
/api/test/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import { INestApplication } from '@nestjs/common';
3 | import * as request from 'supertest';
4 | import { AppModule } from './../src/app.module';
5 |
6 | describe('AppController (e2e)', () => {
7 | let app: INestApplication;
8 |
9 | beforeEach(async () => {
10 | const moduleFixture: TestingModule = await Test.createTestingModule({
11 | imports: [AppModule],
12 | }).compile();
13 |
14 | app = moduleFixture.createNestApplication();
15 | await app.init();
16 | });
17 |
18 | it('/ (GET)', () => {
19 | return request(app.getHttpServer())
20 | .get('/')
21 | .expect(200)
22 | .expect('Hello World!');
23 | });
24 | });
25 |
--------------------------------------------------------------------------------
/api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/api/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "declaration": true,
5 | "removeComments": true,
6 | "emitDecoratorMetadata": true,
7 | "experimentalDecorators": true,
8 | "allowSyntheticDefaultImports": true,
9 | "target": "es2017",
10 | "sourceMap": true,
11 | "outDir": "./dist",
12 | "baseUrl": "./",
13 | "incremental": true
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/ui/.editorconfig:
--------------------------------------------------------------------------------
1 | # editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | charset = utf-8
9 | trim_trailing_whitespace = true
10 | insert_final_newline = true
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/ui/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Node template
3 | # Logs
4 | /logs
5 | *.log
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 |
10 | # Runtime data
11 | pids
12 | *.pid
13 | *.seed
14 | *.pid.lock
15 |
16 | # Directory for instrumented libs generated by jscoverage/JSCover
17 | lib-cov
18 |
19 | # Coverage directory used by tools like istanbul
20 | coverage
21 |
22 | # nyc test coverage
23 | .nyc_output
24 |
25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
26 | .grunt
27 |
28 | # Bower dependency directory (https://bower.io/)
29 | bower_components
30 |
31 | # node-waf configuration
32 | .lock-wscript
33 |
34 | # Compiled binary addons (https://nodejs.org/api/addons.html)
35 | build/Release
36 |
37 | # Dependency directories
38 | node_modules/
39 | jspm_packages/
40 |
41 | # TypeScript v1 declaration files
42 | typings/
43 |
44 | # Optional npm cache directory
45 | .npm
46 |
47 | # Optional eslint cache
48 | .eslintcache
49 |
50 | # Optional REPL history
51 | .node_repl_history
52 |
53 | # Output of 'npm pack'
54 | *.tgz
55 |
56 | # Yarn Integrity file
57 | .yarn-integrity
58 |
59 | # dotenv environment variables file
60 | .env
61 |
62 | # parcel-bundler cache (https://parceljs.org/)
63 | .cache
64 |
65 | # next.js build output
66 | .next
67 |
68 | # nuxt.js build output
69 | .nuxt
70 |
71 | # Nuxt generate
72 | dist
73 |
74 | # vuepress build output
75 | .vuepress/dist
76 |
77 | # Serverless directories
78 | .serverless
79 |
80 | # IDE / Editor
81 | .idea
82 |
83 | # Service worker
84 | sw.*
85 |
86 | # macOS
87 | .DS_Store
88 |
89 | # Vim swap files
90 | *.swp
91 |
--------------------------------------------------------------------------------
/ui/README.md:
--------------------------------------------------------------------------------
1 | # ui
2 |
3 | ## Build Setup
4 |
5 | ```bash
6 | # install dependencies
7 | $ npm install
8 |
9 | # serve with hot reload at localhost:3000
10 | $ npm run dev
11 |
12 | # build for production and launch server
13 | $ npm run build
14 | $ npm run start
15 |
16 | # generate static project
17 | $ npm run generate
18 | ```
19 |
20 | For detailed explanation on how things work, check out the [documentation](https://nuxtjs.org).
21 |
22 | ## Special Directories
23 |
24 | You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality.
25 |
26 | ### `assets`
27 |
28 | The assets directory contains your uncompiled assets such as Stylus or Sass files, images, or fonts.
29 |
30 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/assets).
31 |
32 | ### `components`
33 |
34 | The components directory contains your Vue.js components. Components make up the different parts of your page and can be reused and imported into your pages, layouts and even other components.
35 |
36 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/components).
37 |
38 | ### `layouts`
39 |
40 | Layouts are a great help when you want to change the look and feel of your Nuxt app, whether you want to include a sidebar or have distinct layouts for mobile and desktop.
41 |
42 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/layouts).
43 |
44 |
45 | ### `pages`
46 |
47 | This directory contains your application views and routes. Nuxt will read all the `*.vue` files inside this directory and setup Vue Router automatically.
48 |
49 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/get-started/routing).
50 |
51 | ### `plugins`
52 |
53 | The plugins directory contains JavaScript plugins that you want to run before instantiating the root Vue.js Application. This is the place to add Vue plugins and to inject functions or constants. Every time you need to use `Vue.use()`, you should create a file in `plugins/` and add its path to plugins in `nuxt.config.js`.
54 |
55 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/plugins).
56 |
57 | ### `static`
58 |
59 | This directory contains your static files. Each file inside this directory is mapped to `/`.
60 |
61 | Example: `/static/robots.txt` is mapped as `/robots.txt`.
62 |
63 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/static).
64 |
65 | ### `store`
66 |
67 | This directory contains your Vuex store files. Creating a file in this directory automatically activates Vuex.
68 |
69 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/store).
70 |
--------------------------------------------------------------------------------
/ui/assets/variables.scss:
--------------------------------------------------------------------------------
1 | // Ref: https://github.com/nuxt-community/vuetify-module#customvariables
2 | //
3 | // The variables you want to modify
4 | // $font-size-root: 20px;
5 |
--------------------------------------------------------------------------------
/ui/components/NuxtLogo.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/ui/components/Tutorial.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Welcome to your Nuxt Application
12 |
13 |
14 | We recommend you take a look at the Nuxt documentation , whether you are new or have previous experience with the framework.
15 |
16 |
17 | To get started, remove components/Tutorial.vue
and start coding in pages/index.vue
. Have fun!
18 |
19 |
20 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/ui/components/VuetifyLogo.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
23 |
--------------------------------------------------------------------------------
/ui/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "paths": {
5 | "~/*": ["./*"],
6 | "@/*": ["./*"],
7 | "~~/*": ["./*"],
8 | "@@/*": ["./*"]
9 | }
10 | },
11 | "exclude": ["node_modules", ".nuxt", "dist"]
12 | }
13 |
--------------------------------------------------------------------------------
/ui/layouts/default.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
18 |
19 | {{ item.icon }}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
32 |
33 |
37 | mdi-{{ `chevron-${miniVariant ? 'right' : 'left'}` }}
38 |
39 |
43 | mdi-application
44 |
45 |
49 | mdi-minus
50 |
51 |
52 |
53 |
57 | mdi-menu
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
71 |
72 |
73 |
74 |
75 | mdi-repeat
76 |
77 |
78 | Switch drawer (click me)
79 |
80 |
81 |
82 |
86 | © {{ new Date().getFullYear() }}
87 |
88 |
89 |
90 |
91 |
118 |
--------------------------------------------------------------------------------
/ui/layouts/error.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ pageNotFound }}
5 |
6 |
7 | {{ otherError }}
8 |
9 |
10 | Home page
11 |
12 |
13 |
14 |
15 |
39 |
40 |
45 |
--------------------------------------------------------------------------------
/ui/nuxt.config.js:
--------------------------------------------------------------------------------
1 | import colors from 'vuetify/es5/util/colors'
2 |
3 | export default {
4 | // Disable server-side rendering: https://go.nuxtjs.dev/ssr-mode
5 | ssr: false,
6 |
7 | // Global page headers: https://go.nuxtjs.dev/config-head
8 | head: {
9 | titleTemplate: '%s - ui',
10 | title: 'ui',
11 | htmlAttrs: {
12 | lang: 'en'
13 | },
14 | meta: [
15 | { charset: 'utf-8' },
16 | { name: 'viewport', content: 'width=device-width, initial-scale=1' },
17 | { hid: 'description', name: 'description', content: '' },
18 | { name: 'format-detection', content: 'telephone=no' }
19 | ],
20 | link: [
21 | { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
22 | ]
23 | },
24 |
25 | // Global CSS: https://go.nuxtjs.dev/config-css
26 | css: [
27 | ],
28 |
29 | // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
30 | plugins: [
31 | ],
32 |
33 | // Auto import components: https://go.nuxtjs.dev/config-components
34 | components: true,
35 |
36 | // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
37 | buildModules: [
38 | // https://go.nuxtjs.dev/vuetify
39 | '@nuxtjs/vuetify',
40 | ],
41 |
42 | // Modules: https://go.nuxtjs.dev/config-modules
43 | modules: [
44 | // https://go.nuxtjs.dev/axios
45 | '@nuxtjs/axios',
46 | ],
47 |
48 | // Axios module configuration: https://go.nuxtjs.dev/config-axios
49 | axios: {},
50 |
51 | // Vuetify module configuration: https://go.nuxtjs.dev/config-vuetify
52 | vuetify: {
53 | customVariables: ['~/assets/variables.scss'],
54 | theme: {
55 | dark: true,
56 | themes: {
57 | dark: {
58 | primary: colors.blue.darken2,
59 | accent: colors.grey.darken3,
60 | secondary: colors.amber.darken3,
61 | info: colors.teal.lighten1,
62 | warning: colors.amber.base,
63 | error: colors.deepOrange.accent4,
64 | success: colors.green.accent3
65 | }
66 | }
67 | }
68 | },
69 |
70 | // Build Configuration: https://go.nuxtjs.dev/config-build
71 | build: {
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/ui/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ui",
3 | "version": "1.0.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "nuxt",
7 | "build": "nuxt build",
8 | "start": "nuxt start",
9 | "generate": "nuxt generate"
10 | },
11 | "dependencies": {
12 | "@nuxtjs/axios": "^5.13.6",
13 | "core-js": "^3.15.1",
14 | "nuxt": "^2.15.7",
15 | "vuetify": "^2.5.5"
16 | },
17 | "devDependencies": {
18 | "@nuxtjs/vuetify": "^1.12.1"
19 | }
20 | }
--------------------------------------------------------------------------------
/ui/pages/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
13 |
14 |
15 |
16 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 | Save
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
87 |
--------------------------------------------------------------------------------
/ui/pages/inspire.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 | “First, solve the problem. Then, write the code.”
11 |
12 |
13 | —John Johnson
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/ui/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eddiejaoude/fullstack-nuxtjs-nestjs-datastax-video/51a066678c131f4980ebba42edfbd6c79c9c4e8a/ui/static/favicon.ico
--------------------------------------------------------------------------------
/ui/static/v.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eddiejaoude/fullstack-nuxtjs-nestjs-datastax-video/51a066678c131f4980ebba42edfbd6c79c9c4e8a/ui/static/v.png
--------------------------------------------------------------------------------
/ui/static/vuetify-logo.svg:
--------------------------------------------------------------------------------
1 | Artboard 46
2 |
--------------------------------------------------------------------------------
/ui/store/README.md:
--------------------------------------------------------------------------------
1 | # STORE
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Vuex Store files.
6 | Vuex Store option is implemented in the Nuxt.js framework.
7 |
8 | Creating a file in this directory automatically activates the option in the framework.
9 |
10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store).
11 |
--------------------------------------------------------------------------------