π Visit AI Summary Yearly - Generate your personalized annual digital footprint summary with AI
AI Summary Yearly is an innovative platform that generates personalized annual summaries of your digital footprint using AI. Currently supporting GitHub data analysis, with Twitter and Jike integration coming soon.
-
GitHub Integration π
- β Repository and contribution analysis
- β Code activity heatmaps
- β Language usage statistics
- β Personalized AI summaries using OpenAI
- β Custom avatar generation
-
AI-Powered Features π€
- β OpenAI-driven content generation
- β Multiple summary styles:
- π Sarcastic mode
- π₯ Best Diss mode
- π Classical mode
- π Praise mode
- β AI avatar generation with personality traits
- β Activity heatmaps and statistics
-
Interactive UI π¨
- β Real-time progress tracking
- β Shareable results
- β Downloadable summaries
- β Internationalization support:
- πΊπΈ English (en)
- π¨π³ Chinese (zh)
- π Auto-language detection
- π Dynamic content translation
- π i18n with next-i18next
-
Twitter Integration π¦
- β³ Social activity analysis
- β³ Engagement metrics
- β³ Content highlights
-
Jike Integration π±
- β³ Post analysis
- β³ Interaction patterns
- β³ Community engagement metrics
-
Frontend π¨
- Next.js 13
- React 18
- TailwindCSS
- Framer Motion
- TypeScript
-
Backend
- Next.js API Routes
- Prisma ORM
- Neon Database (PostgreSQL)
- Cloudflare Workers
-
Authentication
- Clerk
- Next-Auth
-
AI/ML
- OpenRouter API (OpenAI compatible)
- Cloudflare AI
-
Storage
- Cloudflare R2
- Supabase
// Key data models for task processing and user management
Task {
id String
status String
style String
username String
data Json
content String?
imageUrl String?
shareUrl String?
userId String?
createdAt DateTime
updatedAt DateTime
}
User {
id String
credits Int
tasks Task[]
}
interface PlatformData {
status: 'ok' | 'processing' | 'failed'
platform: 'github' | 'twitter' | 'jike'
basicStats: {
follower: number
following: number
contentCnt: number
}
heatmapData: {
dates: string[]
counts: number[]
monthlyStats: Array<{...}>
}
selectedContent: {
yearHighlights: Array<{...}>
mostUsedLanguages: Array<{...}>
activityPatterns: {...}
}
}
-
Prerequisites
node >= 18.0.0 npm >= 8.0.0
-
Environment Variables
# Create .env file cp .env.example .env # Required variables DATABASE_URL= # PostgreSQL connection URL CLERK_SECRET_KEY= # Clerk authentication key OPENROUTER_API_KEY= # OpenRouter API key CLOUDFLARE_R2_ACCESS_KEY_ID= # Cloudflare R2 access key CLOUDFLARE_R2_SECRET_KEY= # Cloudflare R2 secret CLOUDFLARE_R2_BUCKET= # R2 bucket name CLOUDFLARE_ACCOUNT_ID= # Cloudflare account ID
-
Database Setup
# Create database schema npx prisma db push # Generate Prisma client npm run prisma:generate # Initialize database (first time) npm run prisma:init-migration # Create new migration (when schema changes) npm run prisma:update "migration_name" # View database in Prisma Studio npm run prisma:studio
-
Installation
# Install dependencies npm install # Install development dependencies npm install -D @types/node @types/react typescript
-
Development
# Start development server npm run dev
-
Production
# Build application npm run build
-
Scripts
# Available npm scripts "dev": "next dev" # Start development server "build": "next build" # Build for production "start": "next start" # Start production server "lint": "next lint" # Run linter "test": "vitest" # Run tests "prisma:generate": "prisma generate" "prisma:update": "npx prisma migrate dev --name" "prisma:studio": "prisma studio"
The system uses Cronicle for scheduled task management:
- Task Processing
- Schedule: Every 1 minute
- APIs:
/api/tasks/process
: Process tasks in the task queue- Method:
POST
- Headers:
Content-Type: application/json
- Headers:
Authorization: Bearer {API_TOKEN}
- Method:
/api/avatar/process
: Process tasks in the avatar queue- Method:
POST
- Headers:
Content-Type: application/json
- Headers:
Authorization: Bearer {API_TOKEN}
- Method:
- Function: Process pending tasks in the queue
- Category: Data Processing
-
Installation
# Install Cronicle docker run -d --name cron \ --hostname manager1 \ -p 3012:3012 --restart always \ -v ./data:/opt/cronicle/data \ -e CRONICLE_secret_key={API_TOKEN} \ cronicle/edge:latest manager
-
Configuration
- Access the web interface at
https://localhost:3012
- Default credentials: admin/admin
- Add the task plugins from the
schedule/
directory - Configure schedules in the Cronicle dashboard
- Access the web interface at
-
Monitoring
- View task logs in Cronicle dashboard
- Monitor task execution history
- Set up email notifications for task failures
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.