first real commit
This commit is contained in:
parent
0c96059b29
commit
f40e6d51a5
11 changed files with 2631 additions and 6 deletions
60
.eslintrc.js
Normal file
60
.eslintrc.js
Normal file
|
@ -0,0 +1,60 @@
|
|||
module.exports = {
|
||||
env: {
|
||||
node: true,
|
||||
es2021: true,
|
||||
},
|
||||
extends: "eslint:recommended",
|
||||
parserOptions: {
|
||||
ecmaVersion: 12,
|
||||
},
|
||||
rules: {
|
||||
// Indentation
|
||||
"indent": ["error", 2], // or 4, depending on your preference
|
||||
|
||||
// Quotation Marks
|
||||
"quotes": ["error", "double", { "allowTemplateLiterals": true }], // or 'single'
|
||||
|
||||
// Semicolons
|
||||
"semi": ["error", "always"],
|
||||
|
||||
// Variable Declarations
|
||||
"init-declarations": "error",
|
||||
|
||||
// Variable Naming
|
||||
"camelcase": "error",
|
||||
|
||||
// Unused Variables
|
||||
"no-unused-vars": "warn",
|
||||
|
||||
// Arrow Functions
|
||||
"prefer-arrow-callback": "error",
|
||||
"arrow-spacing": "error",
|
||||
|
||||
// Block Scoping
|
||||
"block-scoped-var": "error",
|
||||
|
||||
// Function Declarations
|
||||
"func-style": ["error", "declaration", { "allowArrowFunctions": true }],
|
||||
|
||||
// Object Shorthand
|
||||
"object-shorthand": "error",
|
||||
|
||||
// Avoid Underscore-Prefixed Names
|
||||
"no-underscore-dangle": "error",
|
||||
|
||||
// Avoid Eval
|
||||
"no-eval": "error",
|
||||
|
||||
// Avoid Using == and !=
|
||||
"eqeqeq": "error",
|
||||
|
||||
// Space Before Function Parenthesis
|
||||
"space-before-function-paren": ["error", "always"],
|
||||
|
||||
// Linebreak Style
|
||||
"linebreak-style": ["error", "unix"],
|
||||
|
||||
// Max Line Length
|
||||
"max-len": ["error", { "code": 120 }],
|
||||
},
|
||||
};
|
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Node modules
|
||||
node_modules
|
||||
|
||||
# Config files
|
||||
config/config.json
|
||||
.env
|
1
Dockerfile
Normal file
1
Dockerfile
Normal file
|
@ -0,0 +1 @@
|
|||
# todo: Write Dockerfile
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 Jo
|
||||
Copyright (c) 2023 Johannes Reckers
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
|
|
53
README.md
53
README.md
|
@ -1,6 +1,49 @@
|
|||
# JET
|
||||
# Jo's Express Template / JET ;)
|
||||
|
||||
JET < Jo's Express Template > is a simple template for creating new express applications.
|
||||
|
||||
It includes a basic express setup, configured to suit my needs.
|
||||
Additionally, there are well documented guidelines that help keep my codebases organized and maintainable.
|
||||
## Initialize a new project
|
||||
All you really need to do, is to make a copy of example.env and name it ".env".
|
||||
Finally, replace the values as required and enjoy your new Express server :)
|
||||
|
||||
## Code Structure
|
||||
One of the most important aspects of a template like this one is, that it gives the developer some kind of base guidelines to work with. This includes, but is not limited to, comments, code dividers, and more...
|
||||
|
||||
### Dividers
|
||||
The dividers that may be commonly seen in this template are as follows:
|
||||
|
||||
#### [ ↓ ] Watermark ([ASCII generator](https://textkool.com/en/ascii-art-generator?hl=default&vl=default&font=Train&text=%20Jo))
|
||||
```js
|
||||
// _
|
||||
// o O O _ | | ___
|
||||
// o | || | / _ \
|
||||
// TS__[O] _\__/ \___/
|
||||
// {======|_|"""""|_|"""""|
|
||||
// ./o--000'"`-0-0-'"`-0-0-'
|
||||
//
|
||||
// Code written by «Johannes Reckers»
|
||||
//------------------------------------------------>
|
||||
```
|
||||
|
||||
#### [ ↓ ] Categories
|
||||
```js
|
||||
//------------------------------------------------>
|
||||
// Category description
|
||||
//------------------------------------------------>
|
||||
```
|
||||
|
||||
#### [ ↓ ] Sub-Categories
|
||||
```js
|
||||
//-------------------<[ x_x ]>
|
||||
// Sub-Category description
|
||||
//---[ ↓ ]
|
||||
```
|
||||
### Comments
|
||||
|
||||
TODO: Add guidelines for comments
|
||||
|
||||
## IDE Setup
|
||||
Here are some general IDE setup tips and plugins which were used during this templates creation.
|
||||
|
||||
### VSCodium/Code
|
||||
#### Plugins
|
||||
* [Better Comments](https://open-vsx.org/extension/edwinhuish/better-comments-next)
|
||||
* [ESLint](https://open-vsx.org/extension/dbaeumer/vscode-eslint)
|
80
app.js
Normal file
80
app.js
Normal file
|
@ -0,0 +1,80 @@
|
|||
// _
|
||||
// o O O _ | | ___
|
||||
// o | || | / _ \
|
||||
// TS__[O] _\__/ \___/
|
||||
// {======|_|"""""|_|"""""|
|
||||
// ./o--000'"`-0-0-'"`-0-0-'
|
||||
//
|
||||
// Code written by «Johannes Reckers»
|
||||
//------------------------------------------------>
|
||||
|
||||
//------------------------------------------------>
|
||||
// Imports
|
||||
//------------------------------------------------>
|
||||
|
||||
const express = require("express");
|
||||
const bodyParser = require("body-parser");
|
||||
const mysql = require("mysql2");
|
||||
const path = require("path");
|
||||
const dotenv = require("dotenv");
|
||||
dotenv.config();
|
||||
|
||||
//------------------------------------------------>
|
||||
// Express initialization & configuration
|
||||
//------------------------------------------------>
|
||||
|
||||
// Initialize the express instance
|
||||
const app = express();
|
||||
|
||||
// Set views directory and engine
|
||||
app.set("views", path.join(__dirname, "views"));
|
||||
app.set("view engine", "ejs");
|
||||
|
||||
//------------------------------------------------>
|
||||
// Middlewares
|
||||
//------------------------------------------------>
|
||||
|
||||
// Use body-parser to get req.body
|
||||
app.use(bodyParser.urlencoded({ extended: false }));
|
||||
|
||||
//------------------------------------------------>
|
||||
// MySQL connection
|
||||
//------------------------------------------------>
|
||||
|
||||
//! Make extra sure these values are loaded correctly, if you experience any connection issues.
|
||||
const db = mysql.createConnection({
|
||||
database: process.env.DB_NAME,
|
||||
user: process.env.DB_USER,
|
||||
password: process.env.DB_PASSWORD,
|
||||
host: process.env.DB_HOST,
|
||||
port: process.env.DB_PORT
|
||||
});
|
||||
|
||||
db.connect((error) => {
|
||||
if (error) {
|
||||
console.error("[JET] Error connecting to MySQL database:", error);
|
||||
} else {
|
||||
console.log("[JET] Database connected successfully");
|
||||
}
|
||||
});
|
||||
|
||||
//------------------------------------------------>
|
||||
// Routing
|
||||
//------------------------------------------------>
|
||||
|
||||
const apiRouter = require("./routes/apiRoutes");
|
||||
|
||||
app.use("/api", apiRouter);
|
||||
|
||||
// Handle home route
|
||||
app.get("/", (req, res) => {
|
||||
res.render("layout");
|
||||
});
|
||||
|
||||
//------------------------------------------------>
|
||||
// Start Express
|
||||
//------------------------------------------------>
|
||||
|
||||
app.listen(process.env.PORT, () => {
|
||||
console.log(`[JET] started express on http://localhost:${process.env.PORT}`);
|
||||
});
|
9
example.env
Normal file
9
example.env
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Database
|
||||
DB_HOST="exampleHost"
|
||||
DB_PORT=3306
|
||||
DB_NAME="exampleName"
|
||||
DB_USER="exampleUser"
|
||||
DB_PASSWORD="examplePassword"
|
||||
|
||||
# Express
|
||||
PORT=4300
|
2376
package-lock.json
generated
Normal file
2376
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
31
package.json
Normal file
31
package.json
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"name": "jet",
|
||||
"version": "0.0.1",
|
||||
"description": "JET / Jo's Express Template is a template for all of Jo's Express applications!",
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"start": "node .",
|
||||
"startDev": "nodemon ."
|
||||
},
|
||||
"keywords": [
|
||||
"Express",
|
||||
"NodeJS",
|
||||
"JavaScript",
|
||||
"Docker",
|
||||
"Template"
|
||||
],
|
||||
"author": "Johannes Reckers",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"body-parser": "^1.20.2",
|
||||
"dotenv": "^16.3.1",
|
||||
"ejs": "^3.1.9",
|
||||
"express": "^4.18.2",
|
||||
"mysql2": "^3.6.5",
|
||||
"path": "^0.12.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^8.54.0",
|
||||
"nodemon": "^3.0.1"
|
||||
}
|
||||
}
|
8
routes/apiRoutes.js
Normal file
8
routes/apiRoutes.js
Normal file
|
@ -0,0 +1,8 @@
|
|||
const express = require("express");
|
||||
const router = express.Router();
|
||||
|
||||
router.get("/", (req, res) => {
|
||||
|
||||
});
|
||||
|
||||
module.exports = router;
|
11
views/layout.ejs
Normal file
11
views/layout.ejs
Normal file
|
@ -0,0 +1,11 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>JET</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Jo's Express Template</h1>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue