33 |
34 | {% endblock content %}
35 |
36 |
37 | {% block javascripts %}{% endblock javascripts %}
38 |
--------------------------------------------------------------------------------
/apps/templates/home/page-blank.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base.html" %}
2 |
3 | {% block title %} Blank Page {% endblock %}
4 |
5 |
6 | {% block stylesheets %}{% endblock stylesheets %}
7 |
8 | {% block content %}
9 |
10 |
12 |
35 |
36 | {% endblock content %}
37 |
38 |
39 | {% block javascripts %}{% endblock javascripts %}
40 |
--------------------------------------------------------------------------------
/apps/templates/home/register.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base.html" %}
2 |
3 | {% block title %} Register {% endblock %}
4 |
5 |
6 | {% block stylesheets %}{% endblock stylesheets %}
7 |
8 | {% block content %}
9 |
10 |
12 |
13 |
83 |
84 | {% endblock content %}
85 |
86 |
87 | {% block javascripts %}{% endblock javascripts %}
88 |
--------------------------------------------------------------------------------
/apps/templates/home/tables.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base.html" %}
2 |
3 | {% block title %} Tables {% endblock %}
4 |
5 |
6 | {% block stylesheets %}{% endblock stylesheets %}
7 |
8 | {% block content %}
9 |
10 |
12 |
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 |
23 |
24 | Name
25 |
26 |
27 | Country
28 |
29 |
30 | City
31 |
32 |
33 | Salary
34 |
35 |
36 |
37 |
38 |
39 | Dakota Rice
40 |
41 |
42 | Niger
43 |
44 |
45 | Oud-Turnhout
46 |
47 |
48 | $36,738
49 |
50 |
51 |
52 |
53 | Minerva Hooper
54 |
55 |
56 | Curaçao
57 |
58 |
59 | Sinaai-Waas
60 |
61 |
62 | $23,789
63 |
64 |
65 |
66 |
67 | Sage Rodriguez
68 |
69 |
70 | Netherlands
71 |
72 |
73 | Baileux
74 |
75 |
76 | $56,142
77 |
78 |
79 |
80 |
81 | Philip Chaney
82 |
83 |
84 | Korea, South
85 |
86 |
87 | Overland Park
88 |
89 |
90 | $38,735
91 |
92 |
93 |
94 |
95 | Doris Greene
96 |
97 |
98 | Malawi
99 |
100 |
101 | Feldkirchen in Kärnten
102 |
103 |
104 | $63,542
105 |
106 |
107 |
108 |
109 | Mason Porter
110 |
111 |
112 | Chile
113 |
114 |
115 | Gloucester
116 |
117 |
118 | $78,615
119 |
120 |
121 |
122 |
123 | Jon Porter
124 |
125 |
126 | Portugal
127 |
128 |
129 | Gloucester
130 |
131 |
132 | $98,615
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
147 |
148 |
149 |
150 |
151 |
152 | Name
153 |
154 |
155 | Country
156 |
157 |
158 | City
159 |
160 |
161 | Salary
162 |
163 |
164 |
165 |
166 |
167 | Dakota Rice
168 |
169 |
170 | Niger
171 |
172 |
173 | Oud-Turnhout
174 |
175 |
176 | $36,738
177 |
178 |
179 |
180 |
181 | Minerva Hooper
182 |
183 |
184 | Curaçao
185 |
186 |
187 | Sinaai-Waas
188 |
189 |
190 | $23,789
191 |
192 |
193 |
194 |
195 | Sage Rodriguez
196 |
197 |
198 | Netherlands
199 |
200 |
201 | Baileux
202 |
203 |
204 | $56,142
205 |
206 |
207 |
208 |
209 | Philip Chaney
210 |
211 |
212 | Korea, South
213 |
214 |
215 | Overland Park
216 |
217 |
218 | $38,735
219 |
220 |
221 |
222 |
223 | Doris Greene
224 |
225 |
226 | Malawi
227 |
228 |
229 | Feldkirchen in Kärnten
230 |
231 |
232 | $63,542
233 |
234 |
235 |
236 |
237 | Mason Porter
238 |
239 |
240 | Chile
241 |
242 |
243 | Gloucester
244 |
245 |
246 | $78,615
247 |
248 |
249 |
250 |
251 | Jon Porter
252 |
253 |
254 | Portugal
255 |
256 |
257 | Gloucester
258 |
259 |
260 | $98,615
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 | {% endblock content %}
273 |
274 |
275 | {% block javascripts %}{% endblock javascripts %}
276 |
--------------------------------------------------------------------------------
/apps/templates/home/typography.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base.html" %}
2 |
3 | {% block title %} Typography {% endblock %}
4 |
5 |
6 | {% block stylesheets %}{% endblock stylesheets %}
7 |
8 | {% block content %}
9 |
10 |
12 |
13 |
14 |
15 |
16 |
20 |
21 |
22 |
Header 1 The Life of Now Ui Dashboard
23 |
24 |
25 |
Header 2 The Life of Now Ui Dashboard
26 |
27 |
28 |
Header 3 The Life of Now Ui Dashboard
29 |
30 |
31 |
Header 4 The Life of Now Ui Dashboard
32 |
33 |
34 |
Header 5 The Life of Now Ui Dashboard
35 |
36 |
37 |
Header 6 The Life of Now Ui Dashboard
38 |
39 |
40 |
Paragraph
41 | I will be the leader of a company that ends up being worth billions of dollars, because I got the answers. I understand culture. I am the nucleus. I think that’s a responsibility that I have, to push possibilities, to show people, this is the level that things could be at.
42 |
43 |
44 |
45 |
Quote
46 |
47 |
48 | "I will be the leader of a company that ends up being worth billions of dollars, because I got the answers. I understand culture. I am the nucleus. I think that’s a responsibility that I have, to push possibilities, to show people, this is the level that things could be at."
49 |
50 |
51 |
52 | - Noaa
53 |
54 |
55 |
56 |
57 |
58 |
Muted Text
59 |
60 | I will be the leader of a company that ends up being worth billions of dollars, because I got the answers...
61 |
62 |
63 |
64 |
Primary Text
65 |
66 | I will be the leader of a company that ends up being worth billions of dollars, because I got the answers...
67 |
68 |
69 |
Info Text
70 |
71 | I will be the leader of a company that ends up being worth billions of dollars, because I got the answers...
72 |
73 |
74 |
Success Text
75 |
76 | I will be the leader of a company that ends up being worth billions of dollars, because I got the answers...
77 |
78 |
79 |
Warning Text
80 |
81 | I will be the leader of a company that ends up being worth billions of dollars, because I got the answers...
82 |
83 |
84 |
85 |
Danger Text
86 |
87 | I will be the leader of a company that ends up being worth billions of dollars, because I got the answers...
88 |
89 |
90 |
Small Tag
91 | Header with small subtitle
92 | Use "small" tag for the headers
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 | {% endblock content %}
102 |
103 |
104 | {% block javascripts %}{% endblock javascripts %}
105 |
--------------------------------------------------------------------------------
/apps/templates/home/user.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base.html" %}
2 |
3 | {% block title %} User {% endblock %}
4 |
5 |
6 | {% block stylesheets %}{% endblock stylesheets %}
7 |
8 | {% block content %}
9 |
10 |
12 |
13 |
14 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
112 |
113 | "Lamborghini Mercy
114 | Your chick she so thirsty
115 | I'm in that two seat Lambo"
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 | {% endblock content %}
136 |
137 |
138 | {% block javascripts %}{% endblock javascripts %}
139 |
--------------------------------------------------------------------------------
/apps/templates/includes/footer.html:
--------------------------------------------------------------------------------
1 |
19 |
--------------------------------------------------------------------------------
/apps/templates/includes/navigation.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Dashboard
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | {% if current_user.is_authenticated %}
22 |
23 |
31 |
32 |
63 | {% endif %}
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/apps/templates/includes/scripts.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/apps/templates/includes/sidebar.html:
--------------------------------------------------------------------------------
1 |
99 |
--------------------------------------------------------------------------------
/apps/templates/layouts/base-fullscreen.html:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/apps/templates/layouts/base.html:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | Flask Now UI - {% block title %}{% endblock %} | AppSeed
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | {% block stylesheets %}{% endblock stylesheets %}
43 |
44 |
45 |
46 |
47 |
48 |
49 | {% include 'includes/sidebar.html' %}
50 |
51 |
52 |
53 | {% include 'includes/navigation.html' %}
54 |
55 | {% block content %}{% endblock content %}
56 |
57 | {% include 'includes/footer.html' %}
58 |
59 |
60 |
61 |
62 | {% include 'includes/scripts.html' %}
63 |
64 |
65 | {% block javascripts %}{% endblock javascripts %}
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3.8'
2 | services:
3 | appseed-app:
4 | container_name: appseed_app
5 | restart: always
6 | env_file: .env
7 | build: .
8 | networks:
9 | - db_network
10 | - web_network
11 | nginx:
12 | container_name: nginx
13 | restart: always
14 | image: "nginx:latest"
15 | ports:
16 | - "5085:5085"
17 | volumes:
18 | - ./nginx:/etc/nginx/conf.d
19 | networks:
20 | - web_network
21 | depends_on:
22 | - appseed-app
23 | networks:
24 | db_network:
25 | driver: bridge
26 | web_network:
27 | driver: bridge
28 |
--------------------------------------------------------------------------------
/env.sample:
--------------------------------------------------------------------------------
1 | # True for development, False for production
2 | DEBUG=True
3 |
4 | # Flask ENV
5 | FLASK_APP=run.py
6 | FLASK_ENV=development
7 | SECRET_KEY=YOUR_SUPER_KEY
8 |
9 | # If DEBUG=False (production mode)
10 | DB_ENGINE=mysql
11 | DB_NAME=appseed_db
12 | DB_HOST=localhost
13 | DB_PORT=3306
14 | DB_USERNAME=appseed_db_usr
15 | DB_PASS=
16 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/media/flask-now-ui-dashboard-intro.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/flask-now-ui-dashboard/1938b7b7243833067deb873412a10bd39c3360f4/media/flask-now-ui-dashboard-intro.gif
--------------------------------------------------------------------------------
/media/flask-now-ui-dashboard-screen-alerts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/flask-now-ui-dashboard/1938b7b7243833067deb873412a10bd39c3360f4/media/flask-now-ui-dashboard-screen-alerts.png
--------------------------------------------------------------------------------
/media/flask-now-ui-dashboard-screen-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/flask-now-ui-dashboard/1938b7b7243833067deb873412a10bd39c3360f4/media/flask-now-ui-dashboard-screen-icons.png
--------------------------------------------------------------------------------
/media/flask-now-ui-dashboard-screen-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/flask-now-ui-dashboard/1938b7b7243833067deb873412a10bd39c3360f4/media/flask-now-ui-dashboard-screen-login.png
--------------------------------------------------------------------------------
/media/flask-now-ui-dashboard-screen-maps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/flask-now-ui-dashboard/1938b7b7243833067deb873412a10bd39c3360f4/media/flask-now-ui-dashboard-screen-maps.png
--------------------------------------------------------------------------------
/media/flask-now-ui-dashboard-screen-register.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/flask-now-ui-dashboard/1938b7b7243833067deb873412a10bd39c3360f4/media/flask-now-ui-dashboard-screen-register.png
--------------------------------------------------------------------------------
/media/flask-now-ui-dashboard-screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/flask-now-ui-dashboard/1938b7b7243833067deb873412a10bd39c3360f4/media/flask-now-ui-dashboard-screen.png
--------------------------------------------------------------------------------
/nginx/appseed-app.conf:
--------------------------------------------------------------------------------
1 | upstream webapp {
2 | server appseed_app:5005;
3 | }
4 |
5 | server {
6 | listen 5085;
7 | server_name localhost;
8 |
9 | location / {
10 | proxy_pass http://webapp;
11 | proxy_set_header Host $host:$server_port;
12 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "boilerplate-code-flask-dashboard",
3 | "mastertemplate": "boilerplate-code-flask-dashboard",
4 | "version": "2stable.0.1",
5 | "description": "Template project - Flask Boilerplate Code",
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/app-generator/boilerplate-code-flask-dashboard"
9 | },
10 | "bugs": {
11 | "url": "https://github.com/app-generator/boilerplate-code-flask-dashboard/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 | }
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | flask==2.0.2
2 | Werkzeug==2.0.3
3 | jinja2==3.0.2
4 | flask_login==0.5.0
5 | flask_migrate==3.1.0
6 | WTForms==3.0.0
7 | flask_wtf==1.0.0
8 | flask_sqlalchemy==2.5.1
9 | sqlalchemy==1.4.29
10 | email_validator==1.1.3
11 | gunicorn==20.1.0
12 | flask-restx==0.5.1
13 | python-dotenv==0.19.2
14 | Flask-Minify==0.37
15 |
--------------------------------------------------------------------------------
/run.py:
--------------------------------------------------------------------------------
1 | # -*- encoding: utf-8 -*-
2 | """
3 | Copyright (c) 2019 - present AppSeed.us
4 | """
5 |
6 | import os
7 | from flask_migrate import Migrate
8 | from flask_minify import Minify
9 | from sys import exit
10 |
11 | from apps.config import config_dict
12 | from apps import create_app, db
13 |
14 | # WARNING: Don't run with debug turned on in production!
15 | DEBUG = (os.getenv('DEBUG', 'False') == 'True')
16 |
17 | # The configuration
18 | get_config_mode = 'Debug' if DEBUG else 'Production'
19 |
20 | try:
21 |
22 | # Load the configuration using the default values
23 | app_config = config_dict[get_config_mode.capitalize()]
24 |
25 | except KeyError:
26 | exit('Error: Invalid . Expected values [Debug, Production] ')
27 |
28 | app = create_app(app_config)
29 | Migrate(app, db)
30 |
31 | if not DEBUG:
32 | Minify(app=app, html=True, js=False, cssless=False)
33 |
34 | if DEBUG:
35 | app.logger.info('DEBUG = ' + str(DEBUG) )
36 | app.logger.info('Page Compression = ' + 'FALSE' if DEBUG else 'TRUE' )
37 | app.logger.info('DBMS = ' + app_config.SQLALCHEMY_DATABASE_URI)
38 | app.logger.info('ASSETS_ROOT = ' + app_config.ASSETS_ROOT )
39 |
40 | if __name__ == "__main__":
41 | app.run()
42 |
--------------------------------------------------------------------------------