Skip to content

A full-stack application template based on **EdgeOne Pages** and **Next.js**, supporting MySQL database connections, allowing you to deploy production-level applications without managing servers.

License

Notifications You must be signed in to change notification settings

TencentEdgeOne/mysql-template

Repository files navigation

EdgeOne Pages MySQL Template

A full-stack application template based on EdgeOne Pages and Next.js, supporting MySQL database connections, allowing you to deploy production-level applications without managing servers.

✨ Features

  • πŸš€ Serverless Architecture - Based on EdgeOne Pages Node Functions, no server management required
  • πŸ—„οΈ MySQL Integration - Built-in database connection pool and query executor
  • ⚑ Modern Frontend - Next.js 15 + React 19 + TypeScript
  • 🎨 Beautiful UI - Tailwind CSS 4 + Responsive Design
  • πŸ”§ Out-of-the-Box - Preconfigured development environment and build process
  • πŸ“± Mobile-First - Fully responsive design, supporting all devices

πŸ› οΈ Tech Stack

Frontend

  • Next.js 15.4.6 - React full-stack framework
  • React 19.1.0 - User interface library
  • TypeScript 5 - Type-safe JavaScript
  • Tailwind CSS 4 - Utility-first CSS framework

Backend

  • EdgeOne Pages - Edge computing platform
  • Node Functions - Serverless function runtime
  • MySQL2 - MySQL database driver

Development Tools

  • ESLint - Code quality checker
  • PostCSS - CSS postprocessor
  • Turbopack - Fast build tool

πŸš€ Quick Start

Environment Requirements

  • Node.js 18.0 or higher
  • MySQL 5.7 or higher
  • EdgeOne Pages account

Install Dependencies

# Clone the project
git clone <your-repo-url>
cd mysql-template

# Install dependencies
npm install

Environment Configuration

Create a .env.local file and configure the database connection:

# Database configuration
DB_HOST=your-mysql-host
DB_PORT=3306
DB_USER=your-username
DB_PASSWORD=your-password
DB_NAME=your-database-name

Local Development

# Start the development server
edgeone pages dev

# Access http://localhost:8088

Build and Deployment

# Build the production version
edgeone pages build

πŸ“š API Documentation

Database Query API

Endpoint: /db
Method: GET
Function: Executes MySQL query and returns the result

Response Format:

{
  "success": true,
  "data": [...],
  "error": null,
  "thisis": "get"
}

Example Request:

curl -X GET https://your-domain.com/db

Custom Query

Modify the SQL statement in the node-functions/db.js file:

// Modify the query logic
const result = await executeQuery('SELECT * FROM your_table LIMIT 100');

πŸ—„οΈ Database Configuration

MySQL Connection Configuration

The project uses a connection pool to manage database connections, supporting the following configurations:

const dbConfig = {
  host: process.env.DB_HOST,
  port: process.env.DB_PORT || 3306,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
  charset: 'utf8mb4',
  timezone: '+08:00',
  connectionLimit: 10,
  acquireTimeout: 60000,
  timeout: 60000,
  reconnect: true
};

Database Table Structure

Ensure your MySQL database has the corresponding table structure. Example:

πŸ—οΈ Project Structure

mysql-template/
β”œβ”€β”€ src/                    # Source code directory
β”‚   β”œβ”€β”€ app/               # Next.js App Router
β”‚   β”‚   β”œβ”€β”€ layout.tsx     # Root layout component
β”‚   β”‚   β”œβ”€β”€ page.tsx       # Home page component
β”‚   β”‚   └── globals.css    # Global styles
β”‚   β”œβ”€β”€ components/        # React components
β”‚   β”‚   └── ui/           # UI component library
β”‚   └── lib/              # Utility functions
β”œβ”€β”€ node-functions/        # EdgeOne Pages functions
β”‚   └── db.js            # Database operation function
β”œβ”€β”€ public/               # Static resources
β”œβ”€β”€ package.json          # Project configuration
β”œβ”€β”€ next.config.ts        # Next.js configuration
β”œβ”€β”€ tailwind.config.js    # Tailwind CSS configuration
└── tsconfig.json         # TypeScript configuration

πŸ”§ Development Guide

Adding a New API Endpoint

Create a new .js file in the node-functions/ directory:

export const onRequestGet = async (context) => {
  // Handle GET request
  return new Response(JSON.stringify({ message: "Hello World" }), {
    headers: { 'Content-Type': 'application/json' }
  });
};

export const onRequestPost = async (context) => {
  // Handle POST request
  const body = await context.request.json();
  return new Response(JSON.stringify({ received: body }), {
    headers: { 'Content-Type': 'application/json' }
  });
};

Customizing Styles

The project uses Tailwind CSS 4, and you can add custom styles in src/app/globals.css:

@tailwind base;
@tailwind components;
@tailwind utilities;

@layer components {
  .custom-button {
    @apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
  }
}

πŸ› Troubleshooting

Common Issues

Database Connection Failure

  • Check environment variable configurations
  • Confirm MySQL service status
  • Verify network connection and firewall settings

Build Error

  • Clean up node_modules and .next directories
  • Reinstall dependencies: npm install
  • Check TypeScript type errors

API Call Failure

  • Check EdgeOne Pages function deployment status
  • View function log output
  • Confirm database table structure

πŸ“„ License

This project uses the MIT License - see the LICENSE file for details.

Deployment

Deploy with EdgeOne Pages

About

A full-stack application template based on **EdgeOne Pages** and **Next.js**, supporting MySQL database connections, allowing you to deploy production-level applications without managing servers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •