https://github.com/knightchaser/kastle-ts
A simple user registration and login service with express.js@TypeScript
https://github.com/knightchaser/kastle-ts
Last synced: 2 months ago
JSON representation
A simple user registration and login service with express.js@TypeScript
- Host: GitHub
- URL: https://github.com/knightchaser/kastle-ts
- Owner: KnightChaser
- Created: 2024-02-16T16:28:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-17T12:32:39.000Z (over 2 years ago)
- Last Synced: 2025-01-28T16:46:49.405Z (over 1 year ago)
- Language: TypeScript
- Size: 473 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# kastle-ts







A simple user registration and login service with **express.js@TypeScript**. Good start for learning TypeScript, express.js, JWT Token(`jsonwebtoken`), MySQL, or NodeJS based services.
### Features
Because it's main purpose is learn NodeJS-based web frameworks, there are no special features, just user registration, login, and logout. The user logged session will be managed by JWT(JSON Web Token), and user password will be stored after encryption with BCrypt. Also provide basic necessary validity checks like blocking logging in after login, checking account existence before registering a new user with a specific ID.




### Prerequisites
1. Go to `.env` file and adjust the environmental variables (especially for MySQL databases.)
```env
# Express.js server
SERVER_ACCESS_PORT=7777
# Token secret
JWT_SECRET="kastle_ts"
# MySQL database
MYSQL_DB_HOST="localhost"
MYSQL_DB_PORT=3306
MYSQL_DB_USER="root"
MYSQL_DB_PASSWORD="pass12##"
MYSQL_USER_DATABASE_NAME="kastle_ts"
MYSQL_USER_TABLE_NAME="users"
# Bcrypt salt
BCRYPT_SALT_COUNT=10
```
2. Create a table to store user information in MySQL database, `(${env.MYSQL_USER_DATABASE_NAME}.${env.MYSQL_USER_TABLE_NAME})`
```sql
-- A user table to store user information
CREATE TABLE users (
UserID INT AUTO_INCREMENT PRIMARY KEY,
Username VARCHAR(50) NOT NULL,
Email VARCHAR(100) NOT NULL,
Password VARCHAR(255) NOT NULL
);
```
- So, the user information will be stored like below picture. (`Password` is encrypted with BCrypt package at the server side.)

3. Install NPM dependencies. Detailed requirements are described in `/package-lock.json` and `/package.json`.
```powershell
npm install
```