Skip to main content

Backend Layer

OpenTree backend provides API service and scheduled tasks.

API Service

GET /api/keychain # Get all keys
POST /api/keychain # Create key
PUT /api/keychain/:id # Update key
DELETE /api/keychain/:id # Delete key

GET /api/favorites # Get favorites
POST /api/favorites # Add favorite
PUT /api/favorites/:id # Update favorite
DELETE /api/favorites/:id # Delete favorite

GET /api/music # Get music
POST /api/music/play/:id # Play music
...

Database

Uses SQLite + Sequelize ORM:

// packages/main/src/database/models/Keychain.ts

export const Keychain = sequelize.define('Keychain', {
id: { type: DataTypes.UUID, primaryKey: true },
name: { type: DataTypes.STRING, allowNull: false },
url: { type: DataTypes.STRING },
phone: { type: DataTypes.STRING },
email: { type: DataTypes.STRING },
password: { type: DataTypes.STRING, allowNull: false },
note: { type: DataTypes.TEXT },
createdAt: { type: DataTypes.DATE },
updatedAt: { type: DataTypes.DATE },
})

Scheduled Tasks

// Check-in reminder
cron.schedule('0 9 * * *', () => checkinReminder())

// Mail check
cron.schedule('*/10 * * * *', () => checkNewMails())

// Countdown reminder
cron.schedule('0 8 * * *', () => checkCountdowns())