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.
| Framework | Next.js |
| Use Case | Starter,Pages Functions |
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_modulesand.nextdirectories - 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.