Entretien AI - Master Your Interview Game
Get Started Β»
About
Β·
Website
Β·
Blog
Β·
Pricing
Master the art of interviewing with Entretien AI. Our cutting-edge platform uses advanced AI technology to provide personalized interview preparation, helping you transform interview anxiety into confident performance. Whether you're targeting tech giants or startups, we'll help you showcase your best self.
- AI-Powered Mock Interviews: Experience realistic interview simulations with our advanced AI system
- Real-Time Feedback: Get instant analysis on your responses, body language, and delivery
- Technical Interview Prep: Specialized tracks for software engineering roles across all levels
- Performance Analytics: Track your progress with detailed metrics and improvement insights
- Custom Interview Paths: Tailored preparation paths based on your target role and company
- Comprehensive Feedback: Detailed analysis of technical accuracy, communication skills, and presentation
- Next.js 15 - React Framework
- React - UI Library
- TypeScript - Programming Language
- Tailwind CSS - Styling
- shadcn/ui - UI Components
- PostgreSQL - Database
- Prisma - ORM
- Neon - Serverless Postgres
- Auth.js v5 - Authentication
- Server Actions - API Endpoints
- Resend - Email Infrastructure
- React Email - Email Templates
- Deno, bun or node.js 18.x or higher
Important:
This project uses @t3-oss/env-nextjs
for runtime environment variable validation. The validation schema is defined in env.mjs
and ensures all required environment variables are present with the correct types.
The following environment variables must be set in your .env
file:
AUTH_SECRET
: Secret key for authenticationGOOGLE_CLIENT_ID
: Google OAuth client IDGOOGLE_CLIENT_SECRET
: Google OAuth client secretAUTH_GITHUB_ID
: GitHub OAuth app IDAUTH_GITHUB_SECRET
: GitHub OAuth app secret
DATABASE_URL
: PostgreSQL connection string
RESEND_API_KEY
: API key for Resend email serviceEMAIL_FROM
: Sender email address
AI_API_KEY
: API key for AI servicesGROQ_API_KEY
: Groq API key (optional)GROK_API_KEY
: Grok API key (optional)
STRIPE_API_KEY
: Stripe secret keySTRIPE_WEBHOOK_SECRET
: Stripe webhook signing secretNEXT_PUBLIC_STRIPE_PRO_MONTHLY_PLAN_ID
: Monthly pro plan IDNEXT_PUBLIC_STRIPE_PRO_YEARLY_PLAN_ID
: Yearly pro plan IDNEXT_PUBLIC_STRIPE_BUSINESS_MONTHLY_PLAN_ID
: Monthly business plan IDNEXT_PUBLIC_STRIPE_BUSINESS_YEARLY_PLAN_ID
: Yearly business plan ID
NEXT_PUBLIC_APP_URL
: Public URL of your applicationNEXTAUTH_URL
: Auth.js URL (optional in production)
The project uses strict runtime validation for environment variables:
- Server-side variables are validated before the server starts
- Client-side variables are validated during build time
- Type-safe access to environment variables throughout the application
- Helpful error messages if required variables are missing
For production builds, the application uses .env.production
with dummy values during build time. The actual runtime values are provided by Azure App Service environment variables.
Do not modify .env.production
with real values as it's committed to the repository.
- Clone the repository:
git clone https://github.com/Ashref-dev/entretien-ai
- Install dependencies:
bun install
- Copy the example environment file:
cp .env.example .env
- Set up your environment variables:
- NEXTAUTH_URL
- NEXTAUTH_SECRET
- NEXT_PUBLIC_APP_URL
- DATABASE_URL
- Etc.
- Initialize the database:
bunx prisma db push
- Run the development server:
bun dev
This project comes with a ready-to-use Docker configuration and GitHub Actions pipeline for Azure Cloud deployment.
- Includes a production-ready Dockerfile
- Optimized multi-stage builds for smaller image size
- Configured for Next.js and Bun
- Pre-configured GitHub Actions workflow for CI/CD
- Automated deployments to Azure App Service
- For detailed deployment commands, see Deployment Guide
To deploy to Azure:
- Set up an Azure subscription (free with GitHub Student Pack)
- Install Azure CLI and authenticate
- Follow the commands in the deployment guide to:
- Create resource group
- Set up App Service Plan
- Configure environment variables
- Deploy container image
For complete deployment instructions and Azure CLI commands, check our Deployment Guide.
We are committed to fostering an open and welcoming environment. Please read our Code of Conduct for details on our community behavior standards and how to report unacceptable behavior.
We welcome contributions! Please see our contribution guidelines for details.
For support or inquiries, contact us at [email protected]
We take your privacy seriously. See our Privacy Policy for details about:
- Data collection and usage
- Security measures
- Your privacy rights
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for details.
The AGPL-3.0 license ensures that:
- You can use this software freely
- You can modify and distribute this software
- If you modify and share this software, you must:
- Make your modifications available under the same license
- Share the source code when you deploy modified versions
- Preserve copyright notices and license information
here's the links to the used gradients:
Gradient 1:
https://www.shadergradient.co/customize?animate=on&axesHelper=on&bgColor1=%23000000&bgColor2=%23000000&brightness=1&cAzimuthAngle=180&cDistance=5.7&cPolarAngle=115&cameraZoom=1&color1=%23268c9a&color2=%239224b3&color3=%23000000&destination=onCanvas&embedMode=off&envPreset=city&format=gif&fov=45&frameRate=10&grain=on&lightType=3d&pixelDensity=1&positionX=-0.5&positionY=0.1&positionZ=-1&range=enabled&rangeEnd=40&rangeStart=0&reflection=0.1&rotationX=0&rotationY=0&rotationZ=235&shader=defaults&toggleAxis=true&type=waterPlane&uAmplitude=0&uDensity=1.1&uFrequency=5.5&uSpeed=0.1&uStrength=2.4&uTime=0.2&wireframe=false&zoomOut=false
Gradient 2:
https://shadergradient-web.vercel.app/customize?animate=on&axesHelper=off&bgColor1=%23000000&bgColor2=%23000000&brightness=1.1&cAzimuthAngle=170&cDistance=4.4&cPolarAngle=70&cameraZoom=1&color1=%23b5e1ff&color2=%23f6d1ff&color3=%23ffffff&destination=onCanvas&embedMode=off&envPreset=city&format=gif&fov=45&frameRate=10&gizmoHelper=hide&grain=on&lightType=3d&pixelDensity=1&positionX=0&positionY=0.9&positionZ=-0.3&range=enabled&rangeEnd=40&rangeStart=0&reflection=0.1&rotationX=45&rotationY=0&rotationZ=0&shader=defaults&type=waterPlane&uAmplitude=0&uDensity=1.2&uFrequency=0&uSpeed=0.1&uStrength=3.4&uTime=0&wireframe=false
-
Setup i18n Configuration:
- Install and configure next-i18next package
- Create language TypeScript files for supported languages
- Set up language detection and routing
-
Implement Language Files:
- Create translation files for each supported language
- Organize translations by feature/component
- Include metadata like language name and direction
-
Add Language Switching:
- Create language selector component
- Implement language switching logic
- Persist language preference
-
Translate Content:
- Update components to use translation keys
- Add translations for all static text
- Handle dynamic content translation
-
Test Localization:
- Verify translations in all supported languages
- Test RTL language support
- Validate language switching functionality
- Follow Next.js i18n best practices and documentation
- Ensure proper fallback handling for missing translations
- Consider cultural differences in UI/UX design
- Test performance impact of language bundles
-
Database Schema Setup:
- Create newsletter subscriber table in Prisma schema
model NewsletterSubscriber { id String @id @default(cuid()) email String @unique status String @default("active") // active, unsubscribed createdAt DateTime @default(now()) updatedAt DateTime @updatedAt }
-
Email Validation & Processing:
- Implement Zod schema for email validation
- Create server action for subscription handling
- Set up rate limiting for form submissions
const newsletterSchema = z.object({ email: z.string().email("Please enter a valid email address") });
-
Email Service Integration:
- Configure Resend for confirmation emails (it's there but not working)
- Create React Email template for welcome message
- Implement double opt-in confirmation
- Resend API integration
- PostgreSQL database
- Rate limiting middleware
- Email templating system
- Error handling and logging
- Email validation and sanitization
- CSRF protection
- Rate limiting
- GDPR compliance
- Secure storage of subscriber data