Transform your resume into a stunning portfolio website powered by AI
Made for FutureStackGenAI Hackathon 2025 🎯
Demo • Features • Quick Start • Tech Stack • Contributing
Relio is a modern SaaS platform that leverages the power of AI to automatically convert resumes (PDF/DOCX) into beautiful, responsive portfolio websites. Built with Next.js 15, Prisma, and Cerebras AI, Relio makes it incredibly easy for developers, designers, and professionals to showcase their work online.
- ⚡ Lightning Fast: Get your portfolio in seconds, not hours
- 🤖 AI-Powered: Cerebras AI intelligently extracts and structures your resume data
- 🎨 Beautiful Templates: Choose from multiple stunning, responsive designs
- 🆓 Try Without Signup: Test the platform anonymously before committing
- 🔒 Secure: Multi-provider authentication with NextAuth.js
- 🌐 Custom URLs: Get your personalized portfolio at
/your-username
Modern, eye-catching landing page with interactive pixel blast animation
Clean, professional portfolio layout with all your information beautifully organized
Dynamic, animated portfolio with smooth transitions and modern design
Seamless authentication with Google, GitHub, or email/password
Relio uses Cerebras Cloud SDK to intelligently extract:
- Personal information (name, contact, social links)
- Professional skills and technologies
- Work experience with detailed achievements
- Education history
- Projects with descriptions
- And more!
Choose from beautifully designed templates:
- Default: Classic, professional layout
- Animated: Dynamic with smooth transitions and effects
- Minimal: Clean and simple design
- More templates coming soon!
- Google OAuth: Sign in with your Google account
- GitHub OAuth: Authenticate via GitHub
- Email/Password: Traditional credentials
- Anonymous Mode: Try without signing up (24-hour temporary portfolios)
Experience Relio risk-free:
- Upload your resume without creating an account
- Get a temporary portfolio with a random username
- Portfolio expires in 24 hours unless you sign up
- Seamlessly convert to permanent account later
Manage your portfolio with ease:
- Create multiple portfolios
- Edit portfolio information
- Switch between templates
- Choose from 100 unique avatars
- Customize your slug/URL
Each user gets their own custom portfolio URL:
https://relio.app/john-doe
https://relio.app/jane-designer
https://relio.app/creative-dev
Scheduled jobs automatically remove expired temporary portfolios, keeping the database clean and efficient.
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- TailwindCSS 4 - Utility-first CSS framework
- Framer Motion - Smooth animations
- Radix UI - Accessible component primitives
- Lucide React - Beautiful icons
- Three.js - 3D graphics for animations
- PostgreSQL - Robust relational database
- Prisma ORM - Type-safe database client
- NextAuth.js - Complete authentication solution
- Cerebras Cloud SDK - AI-powered resume parsing
- unpdf - PDF text extraction
- mammoth - DOCX document parsing
- react-dropzone - Drag & drop file uploads
- ESLint - Code linting
- Prettier - Code formatting
- Vercel Analytics - Performance monitoring
- Vercel Speed Insights - Real-time metrics
Before you begin, ensure you have the following installed:
- Node.js 18+ (with npm, yarn, or pnpm)
- PostgreSQL database (local or cloud)
- Cerebras API Key (Get yours here)
- OAuth Credentials (optional, for Google/GitHub login)
git clone https://github.com/xkaper001/relio.git
cd relionpm install
# or
yarn install
# or
pnpm installCreate a .env file in the root directory:
# ==========================================
# DATABASE
# ==========================================
DATABASE_URL="postgresql://user:password@localhost:5432/relio"
# ==========================================
# NEXTAUTH
# ==========================================
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-super-secret-key-generate-with-openssl"
# ==========================================
# CEREBRAS AI
# ==========================================
CEREBRAS_API_KEY="your-cerebras-api-key"
# ==========================================
# GOOGLE OAUTH (Optional)
# ==========================================
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
# ==========================================
# GITHUB OAUTH (Optional)
# ==========================================
GITHUB_CLIENT_ID="your-github-client-id"
GITHUB_CLIENT_SECRET="your-github-client-secret"Generate NEXTAUTH_SECRET:
openssl rand -base64 32# Generate Prisma Client
npx prisma generate
# Run database migrations
npx prisma migrate dev --name init
# (Optional) Open Prisma Studio to view/edit data
npx prisma studionpm run devOpen http://localhost:3000 in your browser to see Relio in action! 🎉
relio/
├── prisma/
│ ├── schema.prisma # Database schema definition
│ └── migrations/ # Database migration files
├── public/
│ ├── avatars/ # 100 unique SVG avatars (001-100)
│ └── *.svg # Static assets
├── screenshots/ # Project screenshots
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── auth/ # NextAuth API routes
│ │ │ ├── upload/ # Resume upload endpoint
│ │ │ ├── portfolio/ # Portfolio CRUD operations
│ │ │ ├── dashboard/ # Dashboard data API
│ │ │ └── cleanup/ # Temporary user cleanup
│ │ ├── auth/ # Authentication pages
│ │ ├── dashboard/ # User dashboard UI
│ │ ├── try/ # Anonymous try mode
│ │ ├── [slug]/ # Dynamic portfolio routes
│ │ ├── layout.tsx # Root layout
│ │ ├── page.tsx # Landing page
│ │ └── globals.css # Global styles
│ ├── components/
│ │ ├── ui/ # Reusable UI components
│ │ ├── PortfolioView.tsx # Portfolio renderer
│ │ ├── PixelBlast.tsx # Animated background
│ │ └── Providers.tsx # Context providers
│ ├── lib/
│ │ ├── ai.ts # Cerebras AI integration
│ │ ├── auth.ts # NextAuth configuration
│ │ ├── prisma.ts # Prisma client singleton
│ │ └── utils.ts # Utility functions
│ ├── types/ # TypeScript type definitions
│ ├── data/ # Static data/constants
│ └── hooks/ # Custom React hooks
├── package.json
├── tsconfig.json
├── next.config.ts
├── tailwind.config.ts
└── README.md
Perfect for first-time users who want to test the platform:
- 📤 Upload resume without creating an account
- 🎲 Get a random temporary username (e.g.,
temp-9281) - ⏰ Portfolio expires in 24 hours
- 💾 Banner prompts to sign up and save permanently
- 🔄 Seamlessly migrate to permanent account
User Flow:
- Visit
/try - Upload resume (PDF/DOCX)
- AI processes and generates portfolio
- View temporary portfolio at
/temp-[random-id] - Sign up to keep portfolio forever
Powered by Cerebras Cloud SDK, Relio intelligently extracts:
- 👤 Personal Information: Name, email, phone, location
- 🔗 Social Links: GitHub, LinkedIn, Twitter, portfolio
- 💼 Work Experience: Companies, roles, dates, achievements
- 🎓 Education: Degrees, institutions, graduation dates
- 🛠️ Skills: Technologies, languages, frameworks, tools
- 🚀 Projects: Titles, descriptions, technologies used
- 🏆 Achievements: Awards, certifications, publications
How it works:
- Resume uploaded via drag-and-drop
- Text extracted from PDF/DOCX
- Sent to Cerebras AI with structured prompt
- JSON response parsed and validated
- Portfolio config stored in database
- Real-time rendering with selected template
Flexible, secure authentication powered by NextAuth.js:
OAuth Providers:
- 🔴 Google: Sign in with your Google account
- ⚫ GitHub: Authenticate via GitHub
- 📧 Email/Password: Traditional credentials with bcrypt hashing
Features:
- Session-based authentication
- Secure password hashing
- OAuth token management
- Email verification support
- Account linking
- Protected API routes
Choose from multiple professionally designed templates:
Default Template:
- Clean, professional layout
- Responsive grid system
- Smooth scroll animations
- Card-based sections
Animated Template:
- Dynamic background effects
- Smooth page transitions
- Interactive hover states
- Modern glass morphism
Minimal Template:
- Simple, elegant design
- Focus on content
- Typography-driven
- Fast loading
More templates coming soon!
100 unique SVG avatars (001-100) to choose from:
- AI can auto-select based on your profession
- Manual selection in dashboard
- Lightweight SVG format
- Consistent color palette
- Professional designs
Automated maintenance to keep the system clean:
- 🗑️ Deletes users where
isTemporary = trueandexpiresAt < now - 🔄 Runs via cron job (every 6 hours recommended)
- 🧹 Cascading delete removes all related data
- 📊 Returns count of deleted users
Setup with Vercel Cron:
Create vercel.json:
{
"crons": [{
"path": "/api/cleanup",
"schedule": "0 */6 * * *"
}]
}Manual trigger:
curl -X POST https://your-app.vercel.app/api/cleanup- Edit
src/components/PortfolioView.tsx - Add your template variant
- Update template selector in dashboard
- Add preview image
// Example: Adding a "neon" template
case 'neon':
return <NeonPortfolioLayout config={config} />Edit src/lib/ai.ts to customize resume parsing:
const prompt = `
You are a resume parsing AI. Extract the following:
- Add your custom instructions here
- Modify extraction rules
- Change output format
`- Modify
prisma/schema.prisma - Run migration:
npx prisma migrate dev --name your_migration_name- Update TypeScript types
- Regenerate Prisma Client:
npx prisma generateGlobal Styles: Edit src/app/globals.css
Tailwind Config: Modify tailwind.config.ts
Component Styles: Update individual component files
-
Push to GitHub:
git push origin main
-
Import to Vercel:
- Visit vercel.com
- Click "Import Project"
- Select your GitHub repository
-
Configure Environment Variables: Add all
.envvariables in Vercel dashboard -
Deploy: Click "Deploy" and wait for build to complete
-
Setup Database:
- Use Vercel Postgres (recommended)
- Or connect external PostgreSQL
-
Configure Cron Jobs: Add
vercel.jsonfor automated cleanup
Recommended Providers:
- ✅ Vercel Postgres - Seamless integration
- ✅ Supabase - Free tier, great DX
- ✅ Neon - Serverless Postgres
- ✅ PlanetScale - MySQL alternative
- ✅ Railway - Simple deployment
npx prisma generate- ✓ Check
DATABASE_URLformat - ✓ Verify PostgreSQL is running
- ✓ Confirm credentials are correct
- ✓ Check firewall/network settings
- ✓ Verify redirect URIs in OAuth app settings
- ✓ Check client ID/secret in
.env - ✓ Ensure
NEXTAUTH_URLis correct - ✓ Confirm OAuth app is enabled
- ✓ Check file size limits (default: 10MB)
- ✓ Verify supported formats (PDF, DOCX)
- ✓ Ensure temp directory exists
- ✓ Check server upload limits
# Clear Next.js cache
rm -rf .next
# Reinstall dependencies
rm -rf node_modules
npm install
# Rebuild
npm run buildUpload and parse resume
Request:
FormData {
file: File (PDF/DOCX)
userId?: string
}Response:
{
"success": true,
"portfolio": { /* portfolio config */ },
"slug": "username"
}Get user's portfolio configuration
Response:
{
"id": "...",
"title": "My Portfolio",
"slug": "username",
"template": "default",
"config": { /* portfolio data */ }
}Create or update portfolio
Request:
{
"title": "My Portfolio",
"slug": "username",
"template": "animated",
"config": { /* portfolio data */ }
}Delete expired temporary users
Response:
{
"deleted": 42
}We welcome contributions! Here's how you can help:
- Check existing issues first
- Create detailed bug report
- Include reproduction steps
- Add screenshots if applicable
- Open a feature request issue
- Describe the feature clearly
- Explain use cases
- Discuss implementation ideas
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes
- Write/update tests
- Update documentation
- Commit your changes:
git commit -m "Add amazing feature" - Push to your fork:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow existing code style
- Write meaningful commit messages
- Add comments for complex logic
- Update README if needed
- Test your changes thoroughly
This project is licensed under the MIT License.
MIT License
Copyright (c) 2025 Relio
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Special thanks to:
- Next.js Team - Amazing React framework
- Cerebras AI - Powerful AI infrastructure
- Prisma - Excellent ORM
- NextAuth.js - Simple authentication
- Tailwind CSS - Beautiful styling
- Vercel - Seamless deployment
- Radix UI - Accessible components
- Framer Motion - Smooth animations
- FutureStackGenAI Hackathon - Inspiration and motivation
- 📖 Documentation (Coming Soon)
- 💬 Discussions
- 🐛 Issue Tracker
- 🌐 Website: relio.app (Coming Soon)
- 💼 LinkedIn: Connect
- 🐦 Twitter: @relioapp
- 📧 Email: [email protected]
- Resume upload and parsing
- AI-powered extraction
- Multiple templates
- User authentication
- Anonymous try mode
- Dashboard
- More portfolio templates
- Custom domain support
- Analytics dashboard
- SEO optimization
- PDF export
- Social sharing
- Drag-and-drop portfolio editor
- Custom CSS support
- Collaborative portfolios
- Portfolio themes marketplace
- AI-powered content suggestions
- Integration with job boards
- Team workspaces
- White-label solution
- Advanced analytics
- Custom branding
- SSO support
- API access
- ⚡ Built in: 48 hours (Hackathon)
- 🎯 Lines of Code: ~15,000+
- 🎨 Components: 50+
- 🧪 Technologies: 25+
- 💜 Made with: Passion & Coffee
Made with ❤️ for FutureStackGenAI Hackathon 2025



