├── api-server-django ├── core │ ├── __init__.py │ ├── urls.py │ ├── asgi.py │ ├── wsgi.py │ └── test_runner.py ├── api │ ├── user │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ ├── 0002_user_is_staff.py │ │ │ ├── 0003_alter_user_username.py │ │ │ └── 0001_initial.py │ │ ├── __init__.py │ │ ├── apps.py │ │ ├── serializers.py │ │ ├── tests.py │ │ ├── viewsets.py │ │ └── models.py │ ├── authentication │ │ ├── migrations │ │ │ ├── __init__.py │ │ │ └── 0001_initial.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ └── active_session.py │ │ ├── __init__.py │ │ ├── serializers │ │ │ ├── __init__.py │ │ │ ├── register.py │ │ │ └── login.py │ │ ├── viewsets │ │ │ ├── __init__.py │ │ │ ├── active_session.py │ │ │ ├── login.py │ │ │ ├── logout.py │ │ │ └── register.py │ │ ├── apps.py │ │ ├── backends.py │ │ └── tests.py │ ├── __init__.py │ ├── fixtures │ │ ├── __init__.py │ │ └── user.py │ ├── apps.py │ └── routers.py ├── .dockerignore ├── requirements.txt ├── env.sample ├── build.sh ├── gunicorn-cfg.py ├── nginx │ └── appseed-app.conf ├── Dockerfile ├── docker-compose.yml ├── package.json ├── manage.py ├── CHANGELOG.md ├── LICENSE.md └── .gitignore ├── react-ui ├── .dockerignore ├── env.sample ├── src │ ├── store │ │ ├── constant.js │ │ ├── index.js │ │ ├── actions.js │ │ ├── reducer.js │ │ ├── accountReducer.js │ │ └── customizationReducer.js │ ├── menu-items │ │ ├── index.js │ │ ├── dashboard.js │ │ ├── other.js │ │ ├── pages.js │ │ └── utilities.js │ ├── views │ │ ├── pages │ │ │ └── authentication │ │ │ │ ├── AuthWrapper1.js │ │ │ │ ├── AuthCardWrapper.js │ │ │ │ ├── login │ │ │ │ └── index.js │ │ │ │ ├── register │ │ │ │ └── index.js │ │ │ │ └── authentication3 │ │ │ │ ├── Register3.js │ │ │ │ └── Login3.js │ │ ├── sample-page │ │ │ └── index.js │ │ ├── dashboard │ │ │ └── Default │ │ │ │ ├── chart-data │ │ │ │ ├── bajaj-area-chart.js │ │ │ │ ├── total-order-year-line-chart.js │ │ │ │ ├── total-order-month-line-chart.js │ │ │ │ └── total-growth-bar-chart.js │ │ │ │ ├── index.js │ │ │ │ ├── BajajAreaChartCard.js │ │ │ │ ├── TotalIncomeLightCard.js │ │ │ │ ├── TotalIncomeDarkCard.js │ │ │ │ └── TotalGrowthBarChart.js │ │ └── utilities │ │ │ ├── TablerIcons.js │ │ │ └── MaterialIcons.js │ ├── ui-component │ │ ├── Loadable.js │ │ ├── cards │ │ │ ├── Skeleton │ │ │ │ ├── ImagePlaceholder.js │ │ │ │ ├── TotalIncomeCard.js │ │ │ │ ├── EarningCard.js │ │ │ │ └── TotalGrowthBarChart.js │ │ │ ├── AuthFooter.js │ │ │ ├── SubCard.js │ │ │ ├── MainCard.js │ │ │ └── CardSecondaryAction.js │ │ ├── Loader.js │ │ └── extended │ │ │ ├── AnimateButton.js │ │ │ ├── Transitions.js │ │ │ └── Avatar.js │ ├── hooks │ │ └── useScriptRef.js │ ├── layout │ │ ├── MinimalLayout │ │ │ └── index.js │ │ ├── MainLayout │ │ │ ├── LogoSection │ │ │ │ └── index.js │ │ │ ├── Sidebar │ │ │ │ ├── MenuList │ │ │ │ │ ├── index.js │ │ │ │ │ ├── NavGroup │ │ │ │ │ │ └── index.js │ │ │ │ │ └── NavItem │ │ │ │ │ │ └── index.js │ │ │ │ ├── MenuCard │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── Header │ │ │ │ ├── index.js │ │ │ │ └── ProfileSection │ │ │ │ │ └── UpgradePlanCard.js │ │ │ └── index.js │ │ ├── NavigationScroll.js │ │ └── NavMotion.js │ ├── config.js │ ├── utils │ │ ├── route-guard │ │ │ ├── AuthGuard.js │ │ │ └── GuestGuard.js │ │ └── password-strength.js │ ├── assets │ │ ├── images │ │ │ ├── icons │ │ │ │ ├── earning.svg │ │ │ │ └── social-google.svg │ │ │ ├── auth │ │ │ │ ├── auth-pattern-dark.svg │ │ │ │ └── auth-pattern.svg │ │ │ ├── logo.svg │ │ │ └── logo-dark.svg │ │ └── scss │ │ │ ├── _themes-vars.module.scss │ │ │ └── style.scss │ ├── routes │ │ ├── index.js │ │ ├── AuthenticationRoutes.js │ │ ├── LoginRoutes.js │ │ └── MainRoutes.js │ ├── App.js │ ├── index.js │ └── themes │ │ ├── index.js │ │ ├── palette.js │ │ └── typography.js ├── .prettierrc ├── docker-compose.yml ├── .gitignore ├── Dockerfile ├── web.config ├── LICENSE.md ├── CHANGELOG.md ├── package.json └── public │ ├── favicon.svg │ └── index.html ├── CHANGELOG.md ├── LICENSE.md └── README.md /api-server-django/core/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api-server-django/api/user/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /react-ui/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/npm-debug.log 3 | build 4 | -------------------------------------------------------------------------------- /react-ui/env.sample: -------------------------------------------------------------------------------- 1 | REACT_APP_BACKEND_SERVER='https://YOUR_API_URL/'; 2 | -------------------------------------------------------------------------------- /api-server-django/.dockerignore: -------------------------------------------------------------------------------- 1 | env 2 | .dockerignore 3 | Dockerfile 4 | venv -------------------------------------------------------------------------------- /api-server-django/api/__init__.py: -------------------------------------------------------------------------------- 1 | default_app_config = "api.apps.CoreConfig" 2 | -------------------------------------------------------------------------------- /api-server-django/api/user/__init__.py: -------------------------------------------------------------------------------- 1 | default_app_config = "api.user.apps.UserConfig" 2 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .active_session import ActiveSession 2 | -------------------------------------------------------------------------------- /api-server-django/api/fixtures/__init__.py: -------------------------------------------------------------------------------- 1 | def run_fixtures(): 2 | import api.fixtures.user 3 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/__init__.py: -------------------------------------------------------------------------------- 1 | default_app_config = "api.authentication.apps.AuthenticationConfig" 2 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/serializers/__init__.py: -------------------------------------------------------------------------------- 1 | from .register import RegisterSerializer 2 | from .login import LoginSerializer 3 | -------------------------------------------------------------------------------- /react-ui/src/store/constant.js: -------------------------------------------------------------------------------- 1 | // theme constant 2 | export const gridSpacing = 3; 3 | export const drawerWidth = 260; 4 | export const appDrawerWidth = 320; 5 | -------------------------------------------------------------------------------- /api-server-django/core/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path, include 2 | 3 | urlpatterns = [ 4 | path("api/users/", include(("api.routers", "api"), namespace="api")), 5 | ] 6 | -------------------------------------------------------------------------------- /api-server-django/requirements.txt: -------------------------------------------------------------------------------- 1 | Django==3.2.13 2 | djangorestframework==3.13.1 3 | PyJWT==2.4.0 4 | django-cors-headers==3.13.0 5 | gunicorn==20.1.0 6 | django-environ==0.8.1 7 | -------------------------------------------------------------------------------- /api-server-django/env.sample: -------------------------------------------------------------------------------- 1 | SECRET_KEY=STRONG_KEY_HERE 2 | DEBUG=True 3 | DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] 4 | DB_ENGINE=django.db.backends.sqlite3 5 | DATABASE=db.sqlite3 6 | -------------------------------------------------------------------------------- /api-server-django/build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # exit on error 3 | set -o errexit 4 | 5 | pip install --upgrade pip 6 | pip install -r requirements.txt 7 | 8 | python manage.py migrate 9 | -------------------------------------------------------------------------------- /react-ui/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSpacing": true, 3 | "printWidth": 140, 4 | "singleQuote": true, 5 | "trailingComma": "none", 6 | "tabWidth": 4, 7 | "useTabs": false 8 | } 9 | -------------------------------------------------------------------------------- /api-server-django/api/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class CoreConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "api" 7 | label = "api" 8 | -------------------------------------------------------------------------------- /api-server-django/api/fixtures/user.py: -------------------------------------------------------------------------------- 1 | from api.user.models import User 2 | 3 | user_data = {"username": "admin", "password": "12345678", "email": "teast@admin.com"} 4 | 5 | User.objects.create_user(**user_data) 6 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/viewsets/__init__.py: -------------------------------------------------------------------------------- 1 | from .register import RegisterViewSet 2 | from .login import LoginViewSet 3 | from .active_session import ActiveSessionViewSet 4 | from .logout import LogoutViewSet 5 | -------------------------------------------------------------------------------- /api-server-django/api/user/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class UserConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "api.user" 7 | label = "api_user" 8 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AuthenticationConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "api.authentication" 7 | label = "api_authentication" 8 | -------------------------------------------------------------------------------- /api-server-django/gunicorn-cfg.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | """ 3 | Copyright (c) 2019 - present AppSeed.us 4 | """ 5 | 6 | bind = '0.0.0.0:5005' 7 | workers = 1 8 | accesslog = '-' 9 | loglevel = 'debug' 10 | capture_output = True 11 | enable_stdio_inheritance = True 12 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/models/active_session.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | 4 | class ActiveSession(models.Model): 5 | user = models.ForeignKey("api_user.User", on_delete=models.CASCADE) 6 | token = models.CharField(max_length=255) 7 | date = models.DateTimeField(auto_now_add=True) 8 | -------------------------------------------------------------------------------- /react-ui/src/menu-items/index.js: -------------------------------------------------------------------------------- 1 | import { dashboard } from './dashboard'; 2 | import { utilities } from './utilities'; 3 | import { other } from './other'; 4 | 5 | //-----------------------|| MENU ITEMS ||-----------------------// 6 | 7 | const menuItems = { 8 | items: [dashboard, utilities, other] 9 | }; 10 | 11 | export default menuItems; 12 | -------------------------------------------------------------------------------- /react-ui/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | 5 | sample: 6 | container_name: react-berry 7 | build: 8 | context: . 9 | dockerfile: Dockerfile 10 | volumes: 11 | - '.:/app' 12 | - '/app/node_modules' 13 | ports: 14 | - 3000:3000 15 | environment: 16 | - CHOKIDAR_USEPOLLING=true 17 | -------------------------------------------------------------------------------- /react-ui/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | import { persistStore } from 'redux-persist'; 3 | import reducer from './reducer'; 4 | 5 | //-----------------------|| REDUX - MAIN STORE ||-----------------------// 6 | 7 | const store = createStore(reducer); 8 | const persister = persistStore(store); 9 | 10 | export { store, persister }; 11 | -------------------------------------------------------------------------------- /api-server-django/nginx/appseed-app.conf: -------------------------------------------------------------------------------- 1 | upstream webapp { 2 | server appseed_app:5005; 3 | } 4 | 5 | server { 6 | listen 5000; 7 | server_name localhost; 8 | 9 | location / { 10 | proxy_pass http://webapp; 11 | proxy_set_header Host $host; 12 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /api-server-django/api/user/serializers.py: -------------------------------------------------------------------------------- 1 | from api.user.models import User 2 | from rest_framework import serializers 3 | 4 | 5 | class UserSerializer(serializers.ModelSerializer): 6 | date = serializers.DateTimeField(read_only=True) 7 | 8 | class Meta: 9 | model = User 10 | fields = ["id", "username", "email", "date"] 11 | read_only_field = ["id"] 12 | -------------------------------------------------------------------------------- /react-ui/src/views/pages/authentication/AuthWrapper1.js: -------------------------------------------------------------------------------- 1 | // material-ui 2 | import { styled } from '@material-ui/styles'; 3 | 4 | //-----------------------|| AUTHENTICATION 1 WRAPPER ||-----------------------// 5 | 6 | const AuthWrapper1 = styled('div')(({ theme }) => ({ 7 | backgroundColor: theme.palette.primary.light, 8 | minHeight: '100vh' 9 | })); 10 | 11 | export default AuthWrapper1; 12 | -------------------------------------------------------------------------------- /react-ui/src/ui-component/Loadable.js: -------------------------------------------------------------------------------- 1 | import React, { Suspense } from 'react'; 2 | 3 | // project imports 4 | import Loader from './Loader'; 5 | 6 | //-----------------------|| LOADABLE - LAZY LOADING ||-----------------------// 7 | 8 | const Loadable = (Component) => (props) => ( 9 | }> 10 | 11 | 12 | ); 13 | 14 | export default Loadable; 15 | -------------------------------------------------------------------------------- /react-ui/src/ui-component/cards/Skeleton/ImagePlaceholder.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // material-ui 4 | import Skeleton from '@material-ui/core/Skeleton'; 5 | 6 | //-----------------------|| SKELETON IMAGE CARD ||-----------------------// 7 | 8 | const ImagePlaceholder = ({ ...others }) => { 9 | return ; 10 | }; 11 | 12 | export default ImagePlaceholder; 13 | -------------------------------------------------------------------------------- /react-ui/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | /.idea/ 25 | 26 | .env 27 | -------------------------------------------------------------------------------- /react-ui/src/hooks/useScriptRef.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react'; 2 | 3 | //-----------------------|| ELEMENT REFERENCE HOOKS ||-----------------------// 4 | 5 | const useScriptRef = () => { 6 | const scripted = useRef(true); 7 | 8 | useEffect( 9 | () => () => { 10 | scripted.current = false; 11 | }, 12 | [] 13 | ); 14 | 15 | return scripted; 16 | }; 17 | 18 | export default useScriptRef; 19 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [1.0.1] 2023-02-11 4 | ### Changes 5 | 6 | - Regenerate Codebase, Timestamp `2023-02-11 10:38` 7 | - [React App Generator](https://appseed.us/generator/react/) - free tool 8 | 9 | ## [1.0.0] 2021-10-15 10 | ### Initial import 11 | 12 | - UI: [React Berry](https://github.com/app-generator/react-berry-dashboard) **v0.0.5** 13 | - Backend Version: [Django API Server](https://github.com/app-generator/api-server-django) **v1.0.0** 14 | 15 | -------------------------------------------------------------------------------- /api-server-django/core/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for core project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /api-server-django/core/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for core project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /react-ui/Dockerfile: -------------------------------------------------------------------------------- 1 | # pull official base image 2 | FROM node:14-alpine 3 | 4 | # set working directory 5 | WORKDIR /app 6 | 7 | # add `/app/node_modules/.bin` to $PATH 8 | ENV PATH /app/node_modules/.bin:$PATH 9 | 10 | # install app dependencies 11 | COPY package.json ./ 12 | RUN npm install --silent 13 | RUN npm install react-scripts@4.0.0 -g --silent 14 | 15 | # add app 16 | COPY . ./ 17 | 18 | # Expose port 19 | EXPOSE 3000 20 | 21 | # start app 22 | CMD ["npm", "start"] 23 | -------------------------------------------------------------------------------- /react-ui/src/store/actions.js: -------------------------------------------------------------------------------- 1 | // action - account reducer 2 | export const LOGIN = 'LOGIN'; 3 | export const LOGOUT = 'LOGOUT'; 4 | export const ACCOUNT_INITIALIZE = 'ACCOUNT_INITIALIZE'; 5 | 6 | // action - customization reducer 7 | export const SET_MENU = '@customization/SET_MENU'; 8 | export const MENU_OPEN = '@customization/MENU_OPEN'; 9 | export const SET_FONT_FAMILY = '@customization/SET_FONT_FAMILY'; 10 | export const SET_BORDER_RADIUS = '@customization/SET_BORDER_RADIUS'; 11 | -------------------------------------------------------------------------------- /api-server-django/api/user/migrations/0002_user_is_staff.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.0.1 on 2022-05-27 12:34 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('api_user', '0001_initial'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='user', 15 | name='is_staff', 16 | field=models.BooleanField(default=False), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/viewsets/active_session.py: -------------------------------------------------------------------------------- 1 | from rest_framework import viewsets, mixins, status 2 | from rest_framework.permissions import IsAuthenticated 3 | from rest_framework.response import Response 4 | 5 | 6 | class ActiveSessionViewSet(viewsets.GenericViewSet, mixins.CreateModelMixin): 7 | http_method_names = ["post"] 8 | permission_classes = (IsAuthenticated,) 9 | 10 | def create(self, request, *args, **kwargs): 11 | return Response({"success": True}, status.HTTP_200_OK) 12 | -------------------------------------------------------------------------------- /api-server-django/api/user/migrations/0003_alter_user_username.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 3.2.13 on 2022-06-07 22:44 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('api_user', '0002_user_is_staff'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='user', 15 | name='username', 16 | field=models.CharField(db_index=True, max_length=255, unique=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /api-server-django/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.9 2 | 3 | # set environment variables 4 | ENV PYTHONDONTWRITEBYTECODE 1 5 | ENV PYTHONUNBUFFERED 1 6 | 7 | COPY requirements.txt . 8 | 9 | # install python dependencies 10 | RUN pip install --upgrade pip 11 | RUN pip install --no-cache-dir -r requirements.txt 12 | 13 | COPY env.sample .env 14 | 15 | COPY . . 16 | 17 | # running migrations 18 | RUN python manage.py makemigrations 19 | RUN python manage.py migrate 20 | 21 | # gunicorn 22 | CMD ["gunicorn", "--config", "gunicorn-cfg.py", "core.wsgi"] 23 | 24 | -------------------------------------------------------------------------------- /react-ui/src/layout/MinimalLayout/index.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React from 'react'; 3 | 4 | // project imports 5 | import Customization from './../Customization'; 6 | 7 | //-----------------------|| MINIMAL LAYOUT ||-----------------------// 8 | 9 | const MinimalLayout = (props) => { 10 | return ( 11 | 12 | {props.children} 13 | 14 | 15 | ); 16 | }; 17 | 18 | MinimalLayout.propTypes = { 19 | children: PropTypes.node 20 | }; 21 | 22 | export default MinimalLayout; 23 | -------------------------------------------------------------------------------- /api-server-django/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | appseed-app: 4 | container_name: appseed_app 5 | restart: always 6 | build: . 7 | networks: 8 | - db_network 9 | - web_network 10 | nginx: 11 | container_name: nginx 12 | restart: always 13 | image: "nginx:latest" 14 | ports: 15 | - "5000:5000" 16 | volumes: 17 | - ./nginx:/etc/nginx/conf.d 18 | networks: 19 | - web_network 20 | depends_on: 21 | - appseed-app 22 | networks: 23 | db_network: 24 | driver: bridge 25 | web_network: 26 | driver: bridge 27 | -------------------------------------------------------------------------------- /react-ui/src/layout/MainLayout/LogoSection/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Link } from 'react-router-dom'; 3 | 4 | // material-ui 5 | import { ButtonBase } from '@material-ui/core'; 6 | 7 | // project imports 8 | import config from './../../../config'; 9 | import Logo from './../../../ui-component/Logo'; 10 | 11 | //-----------------------|| MAIN LOGO ||-----------------------// 12 | 13 | const LogoSection = () => { 14 | return ( 15 | 16 | 17 | 18 | ); 19 | }; 20 | 21 | export default LogoSection; 22 | -------------------------------------------------------------------------------- /api-server-django/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api-server-django", 3 | "version": "1.0.1", 4 | "description": "Open-source API Server", 5 | "scripts": {}, 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/app-generator/api-server-django" 9 | }, 10 | "bugs": { 11 | "url": "https://github.com/app-generator/api-server-django/issues", 12 | "email": "support@appseed.us" 13 | }, 14 | "author": "AppSeed App Generator (https://appseed.us)", 15 | "engines": { 16 | "node": ">=10.0.0" 17 | }, 18 | "dependencies": {}, 19 | "devDependencies": {} 20 | } -------------------------------------------------------------------------------- /react-ui/src/config.js: -------------------------------------------------------------------------------- 1 | let BACKEND_SERVER = null; 2 | if (process.env.REACT_APP_BACKEND_SERVER) { 3 | BACKEND_SERVER = process.env.REACT_APP_BACKEND_SERVER; 4 | } else { 5 | BACKEND_SERVER = "http://localhost:5000/api/"; 6 | } 7 | 8 | const config = { 9 | // basename: only at build time to set, and don't add '/' at end off BASENAME for breadcrumbs, also don't put only '/' use blank('') instead, 10 | // like '/berry-material-react/react/default' 11 | basename: '', 12 | defaultPath: '/dashboard/default', 13 | fontFamily: `'Roboto', sans-serif`, 14 | borderRadius: 12, 15 | API_SERVER: BACKEND_SERVER 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /react-ui/src/menu-items/dashboard.js: -------------------------------------------------------------------------------- 1 | // assets 2 | import { IconDashboard, IconDeviceAnalytics } from '@tabler/icons'; 3 | 4 | // constant 5 | const icons = { 6 | IconDashboard: IconDashboard, 7 | IconDeviceAnalytics 8 | }; 9 | 10 | //-----------------------|| DASHBOARD MENU ITEMS ||-----------------------// 11 | 12 | export const dashboard = { 13 | id: 'dashboard', 14 | title: 'Dashboard', 15 | type: 'group', 16 | children: [ 17 | { 18 | id: 'default', 19 | title: 'Dashboard', 20 | type: 'item', 21 | url: '/dashboard/default', 22 | icon: icons['IconDashboard'], 23 | breadcrumbs: false 24 | } 25 | ] 26 | }; 27 | -------------------------------------------------------------------------------- /react-ui/src/store/reducer.js: -------------------------------------------------------------------------------- 1 | import { combineReducers } from 'redux'; 2 | import { persistReducer } from 'redux-persist'; 3 | import storage from 'redux-persist/lib/storage'; 4 | 5 | // reducer import 6 | import customizationReducer from './customizationReducer'; 7 | import accountReducer from './accountReducer'; 8 | 9 | //-----------------------|| COMBINE REDUCER ||-----------------------// 10 | 11 | const reducer = combineReducers({ 12 | account: persistReducer( 13 | { 14 | key: 'account', 15 | storage, 16 | keyPrefix: 'berry-' 17 | }, 18 | accountReducer 19 | ), 20 | customization: customizationReducer 21 | }); 22 | 23 | export default reducer; 24 | -------------------------------------------------------------------------------- /react-ui/src/layout/NavigationScroll.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import { useEffect } from 'react'; 3 | import { withRouter } from 'react-router-dom'; 4 | 5 | //-----------------------|| NAVIGATION SCROLL TO TOP ||-----------------------// 6 | 7 | const NavigationScroll = ({ children, location: { pathname } }) => { 8 | useEffect(() => { 9 | window.scrollTo({ 10 | top: 0, 11 | left: 0, 12 | behavior: 'smooth' 13 | }); 14 | }, [pathname]); 15 | 16 | return children || null; 17 | }; 18 | 19 | NavigationScroll.propTypes = { 20 | children: PropTypes.node, 21 | location: PropTypes.object 22 | }; 23 | 24 | export default withRouter(NavigationScroll); 25 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/viewsets/login.py: -------------------------------------------------------------------------------- 1 | from rest_framework import viewsets, mixins 2 | from rest_framework.response import Response 3 | from rest_framework import status 4 | from rest_framework.permissions import AllowAny 5 | 6 | from api.authentication.serializers import LoginSerializer 7 | 8 | 9 | class LoginViewSet(viewsets.GenericViewSet, mixins.CreateModelMixin): 10 | permission_classes = (AllowAny,) 11 | serializer_class = LoginSerializer 12 | 13 | def create(self, request, *args, **kwargs): 14 | serializer = self.get_serializer(data=request.data) 15 | 16 | serializer.is_valid(raise_exception=True) 17 | 18 | return Response(serializer.validated_data, status=status.HTTP_200_OK) 19 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/viewsets/logout.py: -------------------------------------------------------------------------------- 1 | from rest_framework import viewsets, mixins 2 | from rest_framework.response import Response 3 | from rest_framework import status 4 | from rest_framework.permissions import IsAuthenticated 5 | 6 | from api.authentication.models import ActiveSession 7 | 8 | 9 | class LogoutViewSet(viewsets.GenericViewSet, mixins.CreateModelMixin): 10 | permission_classes = (IsAuthenticated,) 11 | 12 | def create(self, request, *args, **kwargs): 13 | user = request.user 14 | 15 | session = ActiveSession.objects.get(user=user) 16 | session.delete() 17 | 18 | return Response( 19 | {"success": True, "msg": "Token revoked"}, status=status.HTTP_200_OK 20 | ) 21 | -------------------------------------------------------------------------------- /api-server-django/api/routers.py: -------------------------------------------------------------------------------- 1 | from api.authentication.viewsets import ( 2 | RegisterViewSet, 3 | LoginViewSet, 4 | ActiveSessionViewSet, 5 | LogoutViewSet, 6 | ) 7 | from rest_framework import routers 8 | from api.user.viewsets import UserViewSet 9 | 10 | router = routers.SimpleRouter(trailing_slash=False) 11 | 12 | router.register(r"edit", UserViewSet, basename="user-edit") 13 | 14 | router.register(r"register", RegisterViewSet, basename="register") 15 | 16 | router.register(r"login", LoginViewSet, basename="login") 17 | 18 | router.register(r"checkSession", ActiveSessionViewSet, basename="check-session") 19 | 20 | router.register(r"logout", LogoutViewSet, basename="logout") 21 | 22 | urlpatterns = [ 23 | *router.urls, 24 | ] 25 | -------------------------------------------------------------------------------- /api-server-django/manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """Django's command-line utility for administrative tasks.""" 3 | import os 4 | import sys 5 | 6 | 7 | def main(): 8 | """Run administrative tasks.""" 9 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") 10 | try: 11 | from django.core.management import execute_from_command_line 12 | except ImportError as exc: 13 | raise ImportError( 14 | "Couldn't import Django. Are you sure it's installed and " 15 | "available on your PYTHONPATH environment variable? Did you " 16 | "forget to activate a virtual environment?" 17 | ) from exc 18 | execute_from_command_line(sys.argv) 19 | 20 | 21 | if __name__ == "__main__": 22 | main() 23 | -------------------------------------------------------------------------------- /react-ui/src/utils/route-guard/AuthGuard.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React from 'react'; 3 | import { useSelector } from 'react-redux'; 4 | import { Redirect } from 'react-router-dom'; 5 | 6 | //-----------------------|| AUTH GUARD ||-----------------------// 7 | 8 | /** 9 | * Authentication guard for routes 10 | * @param {PropTypes.node} children children element/node 11 | */ 12 | const AuthGuard = ({ children }) => { 13 | const account = useSelector((state) => state.account); 14 | const { isLoggedIn } = account; 15 | 16 | if (!isLoggedIn) { 17 | return ; 18 | } 19 | 20 | return children; 21 | }; 22 | 23 | AuthGuard.propTypes = { 24 | children: PropTypes.node 25 | }; 26 | 27 | export default AuthGuard; 28 | -------------------------------------------------------------------------------- /react-ui/src/assets/images/icons/earning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /react-ui/src/ui-component/cards/AuthFooter.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // material-ui 4 | import { Link, Typography, Stack } from '@material-ui/core'; 5 | 6 | //-----------------------|| FOOTER - AUTHENTICATION 2 & 3 ||-----------------------// 7 | 8 | const AuthFooter = () => { 9 | return ( 10 | 11 | 12 | berrydashboard.io 13 | 14 | 15 | © codedthemes.com 16 | 17 | 18 | ); 19 | }; 20 | 21 | export default AuthFooter; 22 | -------------------------------------------------------------------------------- /react-ui/src/ui-component/Loader.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // material-ui 4 | import { makeStyles } from '@material-ui/styles'; 5 | import LinearProgress from '@material-ui/core/LinearProgress'; 6 | 7 | // style constant 8 | const useStyles = makeStyles((theme) => ({ 9 | root: { 10 | position: 'fixed', 11 | top: 0, 12 | left: 0, 13 | zIndex: 1301, 14 | width: '100%', 15 | '& > * + *': { 16 | marginTop: theme.spacing(2) 17 | } 18 | } 19 | })); 20 | 21 | //-----------------------|| Loader ||-----------------------// 22 | 23 | const Loader = () => { 24 | const classes = useStyles(); 25 | 26 | return ( 27 |
28 | 29 |
30 | ); 31 | }; 32 | 33 | export default Loader; 34 | -------------------------------------------------------------------------------- /react-ui/src/utils/route-guard/GuestGuard.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React from 'react'; 3 | import { useSelector } from 'react-redux'; 4 | import { Redirect } from 'react-router-dom'; 5 | 6 | // project imports 7 | import config from '../../config'; 8 | 9 | //-----------------------|| GUEST GUARD ||-----------------------// 10 | 11 | /** 12 | * Guest guard for routes having no auth required 13 | * @param {PropTypes.node} children children element/node 14 | */ 15 | const GuestGuard = ({ children }) => { 16 | const account = useSelector((state) => state.account); 17 | const { isLoggedIn } = account; 18 | 19 | if (isLoggedIn) { 20 | return ; 21 | } 22 | 23 | return children; 24 | }; 25 | 26 | GuestGuard.propTypes = { 27 | children: PropTypes.node 28 | }; 29 | 30 | export default GuestGuard; 31 | -------------------------------------------------------------------------------- /react-ui/src/layout/MainLayout/Sidebar/MenuList/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // material-ui 4 | import { Typography } from '@material-ui/core'; 5 | 6 | // project imports 7 | import NavGroup from './NavGroup'; 8 | import menuItem from './../../../../menu-items'; 9 | 10 | //-----------------------|| SIDEBAR MENU LIST ||-----------------------// 11 | 12 | const MenuList = () => { 13 | const navItems = menuItem.items.map((item) => { 14 | switch (item.type) { 15 | case 'group': 16 | return ; 17 | default: 18 | return ( 19 | 20 | Menu Items Error 21 | 22 | ); 23 | } 24 | }); 25 | 26 | return navItems; 27 | }; 28 | 29 | export default MenuList; 30 | -------------------------------------------------------------------------------- /api-server-django/api/authentication/viewsets/register.py: -------------------------------------------------------------------------------- 1 | from rest_framework import viewsets, status 2 | from rest_framework.response import Response 3 | from rest_framework.permissions import AllowAny 4 | 5 | from api.authentication.serializers import RegisterSerializer 6 | 7 | 8 | class RegisterViewSet(viewsets.ModelViewSet): 9 | http_method_names = ["post"] 10 | permission_classes = (AllowAny,) 11 | serializer_class = RegisterSerializer 12 | 13 | def create(self, request, *args, **kwargs): 14 | serializer = self.get_serializer(data=request.data) 15 | 16 | serializer.is_valid(raise_exception=True) 17 | user = serializer.save() 18 | 19 | return Response( 20 | { 21 | "success": True, 22 | "userID": user.id, 23 | "msg": "The user was successfully registered", 24 | }, 25 | status=status.HTTP_201_CREATED, 26 | ) 27 | -------------------------------------------------------------------------------- /api-server-django/core/test_runner.py: -------------------------------------------------------------------------------- 1 | from importlib import import_module 2 | 3 | from django.conf import settings 4 | from django.db import connections 5 | from django.test.runner import DiscoverRunner 6 | 7 | 8 | class CoreTestRunner(DiscoverRunner): 9 | def setup_test_environment(self, **kwargs): 10 | """We set the TESTING setting to True. By default, it's on False.""" 11 | super().setup_test_environment(**kwargs) 12 | settings.TESTING = True 13 | 14 | def setup_databases(self, **kwargs): 15 | """We set the database""" 16 | kwargs["aliases"] = connections 17 | r = super().setup_databases(**kwargs) 18 | self.load_fixtures() 19 | return r 20 | 21 | @classmethod 22 | def load_fixtures(cls): 23 | try: 24 | module = import_module(f"api.fixtures") 25 | getattr(module, "run_fixtures")() 26 | except ImportError: 27 | return 28 | -------------------------------------------------------------------------------- /react-ui/web.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /react-ui/src/routes/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Redirect, Switch } from 'react-router-dom'; 3 | 4 | // routes 5 | import MainRoutes from './MainRoutes'; 6 | import LoginRoutes from './LoginRoutes'; 7 | import AuthenticationRoutes from './AuthenticationRoutes'; 8 | 9 | // project imports 10 | import config from './../config'; 11 | 12 | //-----------------------|| ROUTING RENDER ||-----------------------// 13 | 14 | const Routes = () => { 15 | return ( 16 | 17 | 18 | 19 | {/* Routes for authentication pages */} 20 | 21 | 22 | {/* Route for login */} 23 | 24 | 25 | {/* Routes for main layouts */} 26 | 27 | 28 | 29 | ); 30 | }; 31 | 32 | export default Routes; 33 | -------------------------------------------------------------------------------- /react-ui/src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useSelector } from 'react-redux'; 3 | 4 | import { ThemeProvider } from '@material-ui/core/styles'; 5 | import { CssBaseline, StyledEngineProvider } from '@material-ui/core'; 6 | 7 | // routing 8 | import Routes from './routes'; 9 | 10 | // defaultTheme 11 | import theme from './themes'; 12 | 13 | // project imports 14 | import NavigationScroll from './layout/NavigationScroll'; 15 | 16 | //-----------------------|| APP ||-----------------------// 17 | 18 | const App = () => { 19 | const customization = useSelector((state) => state.customization); 20 | 21 | return ( 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | export default App; 34 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2019 - present [CodedThemes](https://bit.ly/37fF9RT) / [AppSeed](http://appseed.us/) 4 | 5 |
6 | 7 | ## Licensing Information 8 | 9 |
10 | 11 | | Item | - | 12 | | ---------------------------------- | --- | 13 | | License Type | MIT | 14 | | Use for print | **YES** | 15 | | Create single personal website/app | **YES** | 16 | | Create single website/app for client | **YES** | 17 | | Create multiple website/apps for clients | **YES** | 18 | | Create multiple SaaS applications | **YES** | 19 | | End-product paying users | **YES** | 20 | | Product sale | **YES** | 21 | | Remove footer credits | **YES** | 22 | | --- | --- | 23 | | Remove copyright mentions from source code | NO | 24 | | Production deployment assistance | NO | 25 | | Create HTML/CSS template for sale | NO | 26 | | Create Theme/Template for CMS for sale | NO | 27 | | Separate sale of our UI Elements | NO | 28 | 29 |
30 | 31 | --- 32 | For more information regarding licensing, contact the AppSeed Service < *support@appseed.us* > 33 | -------------------------------------------------------------------------------- /api-server-django/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [1.0.4] 2022-11-05 4 | ### Improvements 5 | 6 | - Updated for Deploy on RENDER using [Python Deployer](https://github.com/app-generator/deploy-automation-render) 7 | - `python.exe .\deployer.py django https://github.com/app-generator/api-server-django` 8 | - The new API is usable via `https://api-server-django-.onrender.com/api/` 9 | 10 | ## [1.0.3] 2022-10-03 11 | ### Improvements 12 | 13 | - Fix Docker Scripts 14 | 15 | ## [1.0.2] 2022-06-07 16 | ### Improvements 17 | 18 | - Update Docker Scripts 19 | - App served now by Gunicorn 20 | - Update Dependencies 21 | 22 | ## [1.0.1] 2022-01-28 23 | ### Improvements 24 | 25 | - Dependencies update (all packages) 26 | - `Django==4.0.1` 27 | 28 | ## [1.0.0] 2021-07-20 29 | ### First stable version 30 | 31 | > Features: 32 | 33 | - API: 34 | - Sign UP: `/api/users/register` 35 | - Sign IN: `/api/users/login` 36 | - Logout: `/api/users/logout` 37 | - Check Session: `/api/users/checkSession` 38 | - Edit User: `/api/users/edit` 39 | - Docker 40 | -------------------------------------------------------------------------------- /react-ui/LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2019 - present [CodedThemes](https://codedthemes.com/) / [AppSeed](http://appseed.us/) 4 | 5 |
6 | 7 | ## Licensing Information 8 | 9 |
10 | 11 | | Item | - | 12 | | ---------------------------------- | --- | 13 | | License Type | MIT | 14 | | Use for print | **YES** | 15 | | Create single personal website/app | **YES** | 16 | | Create single website/app for client | **YES** | 17 | | Create multiple website/apps for clients | **YES** | 18 | | Create multiple SaaS applications | **YES** | 19 | | End-product paying users | **YES** | 20 | | Product sale | **YES** | 21 | | Remove footer credits | **YES** | 22 | | --- | --- | 23 | | Remove copyright mentions from source code | NO | 24 | | Production deployment assistance | NO | 25 | | Create HTML/CSS template for sale | NO | 26 | | Create Theme/Template for CMS for sale | NO | 27 | | Separate sale of our UI Elements | NO | 28 | 29 |
30 | 31 | --- 32 | For more information regarding licensing, please contact the AppSeed Service < *support@appseed.us* > 33 | -------------------------------------------------------------------------------- /react-ui/src/views/sample-page/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // material-ui 4 | import { Typography } from '@material-ui/core'; 5 | 6 | // project imports 7 | import MainCard from '../../ui-component/cards/MainCard'; 8 | 9 | //==============================|| SAMPLE PAGE ||==============================// 10 | 11 | const SamplePage = () => { 12 | return ( 13 | 14 | 15 | Lorem ipsum dolor sit amen, consenter nipissing eli, sed do elusion tempos incident ut laborers et doolie magna alissa. Ut 16 | enif ad minim venice, quin nostrum exercitation illampu laborings nisi ut liquid ex ea commons construal. Duos aube grue 17 | dolor in reprehended in voltage veil esse colum doolie eu fujian bulla parian. Exceptive sin ocean cuspidate non president, 18 | sunk in culpa qui officiate descent molls anim id est labours. 19 | 20 | 21 | ); 22 | }; 23 | 24 | export default SamplePage; 25 | -------------------------------------------------------------------------------- /react-ui/src/menu-items/other.js: -------------------------------------------------------------------------------- 1 | // assets 2 | import { IconBrandChrome, IconHelp, IconSitemap } from '@tabler/icons'; 3 | 4 | // constant 5 | const icons = { 6 | IconBrandChrome: IconBrandChrome, 7 | IconHelp: IconHelp, 8 | IconSitemap: IconSitemap 9 | }; 10 | 11 | //-----------------------|| SAMPLE PAGE & DOCUMENTATION MENU ITEMS ||-----------------------// 12 | 13 | export const other = { 14 | id: 'sample-docs-roadmap', 15 | type: 'group', 16 | children: [ 17 | { 18 | id: 'sample-page', 19 | title: 'Sample Page', 20 | type: 'item', 21 | url: '/sample-page', 22 | icon: icons['IconBrandChrome'], 23 | breadcrumbs: false 24 | }, 25 | { 26 | id: 'documentation', 27 | title: 'Documentation', 28 | type: 'item', 29 | url: 'https://docs.appseed.us/products/react/node-js-berry-dashboard', 30 | icon: icons['IconHelp'], 31 | external: true, 32 | target: true 33 | } 34 | ] 35 | }; 36 | -------------------------------------------------------------------------------- /react-ui/src/layout/NavMotion.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React from 'react'; 3 | 4 | // third-party 5 | import { motion } from 'framer-motion'; 6 | 7 | //-----------------------|| ANIMATION FOR CONTENT ||-----------------------// 8 | 9 | const NavMotion = ({ children }) => { 10 | const motionVariants = { 11 | initial: { 12 | opacity: 0, 13 | scale: 0.99 14 | }, 15 | in: { 16 | opacity: 1, 17 | scale: 1 18 | }, 19 | out: { 20 | opacity: 0, 21 | scale: 1.01 22 | } 23 | }; 24 | 25 | const motionTransition = { 26 | type: 'tween', 27 | ease: 'anticipate', 28 | duration: 0.4 29 | }; 30 | 31 | return ( 32 | 33 | {children} 34 | 35 | ); 36 | }; 37 | 38 | NavMotion.propTypes = { 39 | children: PropTypes.node 40 | }; 41 | 42 | export default NavMotion; 43 | -------------------------------------------------------------------------------- /react-ui/src/views/dashboard/Default/chart-data/bajaj-area-chart.js: -------------------------------------------------------------------------------- 1 | //-----------------------|| DASHBOARD - BAJAJ AREA CHART ||-----------------------// 2 | 3 | const chartData = { 4 | type: 'area', 5 | height: 95, 6 | options: { 7 | chart: { 8 | id: 'support-chart', 9 | sparkline: { 10 | enabled: true 11 | } 12 | }, 13 | dataLabels: { 14 | enabled: false 15 | }, 16 | stroke: { 17 | curve: 'smooth', 18 | width: 1 19 | }, 20 | tooltip: { 21 | fixed: { 22 | enabled: false 23 | }, 24 | x: { 25 | show: false 26 | }, 27 | y: { 28 | title: { 29 | formatter: (seriesName) => 'Ticket ' 30 | } 31 | }, 32 | marker: { 33 | show: false 34 | } 35 | } 36 | }, 37 | series: [ 38 | { 39 | data: [0, 15, 10, 50, 30, 40, 25] 40 | } 41 | ] 42 | }; 43 | 44 | export default chartData; 45 | -------------------------------------------------------------------------------- /react-ui/src/views/utilities/TablerIcons.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | // material-ui 4 | import { makeStyles } from '@material-ui/styles'; 5 | import { Card } from '@material-ui/core'; 6 | 7 | // project imports 8 | import MainCard from './../../ui-component/cards/MainCard'; 9 | import SecondaryAction from './../../ui-component/cards/CardSecondaryAction'; 10 | 11 | // style constant 12 | const useStyles = makeStyles((theme) => ({ 13 | frame: { 14 | height: 'calc(100vh - 210px)', 15 | border: '1px solid', 16 | borderColor: theme.palette.primary.light 17 | } 18 | })); 19 | 20 | //=============================|| TABLER ICONS ||=============================// 21 | 22 | const TablerIcons = () => { 23 | const classes = useStyles(); 24 | 25 | return ( 26 | }> 27 | 28 |