https://github.com/ashref-dev/entretien-ai
Land Your Dream Job With Our Interview Practice. ๐ Get instant feedback, improve fast, and land your dream role. 95% of users increased confidence after just 3 sessions.
https://github.com/ashref-dev/entretien-ai
azure nextjs react tailwindcss
Last synced: about 2 months ago
JSON representation
Land Your Dream Job With Our Interview Practice. ๐ Get instant feedback, improve fast, and land your dream role. 95% of users increased confidence after just 3 sessions.
- Host: GitHub
- URL: https://github.com/ashref-dev/entretien-ai
- Owner: Ashref-dev
- License: agpl-3.0
- Created: 2024-10-11T21:08:12.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-05T22:03:49.000Z (over 1 year ago)
- Last Synced: 2025-01-05T23:18:52.290Z (over 1 year ago)
- Topics: azure, nextjs, react, tailwindcss
- Language: TypeScript
- Homepage: https://entretien-ai.com/
- Size: 8.92 MB
- Stars: 16
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README


Entretien AI - Master Your Interview Game
Get Started ยป
About
ยท
Website
ยท
Blog
ยท
Pricing
## About Entretien AI
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.
## Key Features
- **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
## Tech Stack
### Frontend
- [Next.js 15](https://nextjs.org/) - React Framework
- [React](https://react.dev/) - UI Library
- [TypeScript](https://www.typescriptlang.org/) - Programming Language
- [Tailwind CSS](https://tailwindcss.com/) - Styling
- [shadcn/ui](https://ui.shadcn.com/) - UI Components
### Backend & Database
- [PostgreSQL](https://www.postgresql.org/) - Database
- [Prisma](https://www.prisma.io/) - ORM
- [Neon](https://neon.tech/) - Serverless Postgres
- [Auth.js v5](https://authjs.dev/) - Authentication
- [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions) - API Endpoints
### Email & Communications
- [Resend](https://resend.com/) - Email Infrastructure
- [React Email](https://react.email/) - Email Templates
## Getting Started
### Prerequisites
- 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.
### Required Environment Variables
The following environment variables must be set in your `.env` file:
#### Authentication
- `AUTH_SECRET`: Secret key for authentication
- `GOOGLE_CLIENT_ID`: Google OAuth client ID
- `GOOGLE_CLIENT_SECRET`: Google OAuth client secret
- `AUTH_GITHUB_ID`: GitHub OAuth app ID
- `AUTH_GITHUB_SECRET`: GitHub OAuth app secret
#### Database
- `DATABASE_URL`: PostgreSQL connection string
#### Email
- `RESEND_API_KEY`: API key for Resend email service
- `EMAIL_FROM`: Sender email address
#### AI Services
- `AI_API_KEY`: API key for AI services
- `GROQ_API_KEY`: Groq API key (optional)
- `GROK_API_KEY`: Grok API key (optional)
#### Stripe Integration
- `STRIPE_API_KEY`: Stripe secret key
- `STRIPE_WEBHOOK_SECRET`: Stripe webhook signing secret
- `NEXT_PUBLIC_STRIPE_PRO_MONTHLY_PLAN_ID`: Monthly pro plan ID
- `NEXT_PUBLIC_STRIPE_PRO_YEARLY_PLAN_ID`: Yearly pro plan ID
- `NEXT_PUBLIC_STRIPE_BUSINESS_MONTHLY_PLAN_ID`: Monthly business plan ID
- `NEXT_PUBLIC_STRIPE_BUSINESS_YEARLY_PLAN_ID`: Yearly business plan ID
#### Application URLs
- `NEXT_PUBLIC_APP_URL`: Public URL of your application
- `NEXTAUTH_URL`: Auth.js URL (optional in production)
### Environment Validation
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.
### Installation
1. Clone the repository:
```sh
git clone https://github.com/Ashref-dev/entretien-ai
```
2. Install dependencies:
```sh
bun install
```
3. Copy the example environment file:
```sh
cp .env.example .env
```
4. Set up your environment variables:
- NEXTAUTH_URL
- NEXTAUTH_SECRET
- NEXT_PUBLIC_APP_URL
- DATABASE_URL
- Etc.
5. Initialize the database:
```sh
bunx prisma db push
```
6. Run the development server:
```sh
bun dev
```
## Deployment
### This project comes with a ready-to-use Docker configuration and GitHub Actions pipeline for Azure Cloud deployment.
### Docker Support
- Includes a production-ready Dockerfile
- Optimized multi-stage builds for smaller image size
- Configured for Next.js and Bun
### Azure Cloud Deployment
- Pre-configured GitHub Actions workflow for CI/CD
- Automated deployments to Azure App Service
- For detailed deployment commands, see [Deployment Guide](Deployment/commands.md)
To deploy to Azure:
1. Set up an Azure subscription (free with GitHub Student Pack)
2. Install Azure CLI and authenticate
3. 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](Deployment/commands.md).
## Code of Conduct
We are committed to fostering an open and welcoming environment. Please read our [Code of Conduct](CODE_OF_CONDUCT.md) for details on our community behavior standards and how to report unacceptable behavior.
## Contributing
We welcome contributions! Please see our contribution guidelines for details.
## Contact
For support or inquiries, contact us at support@entretien-ai.com
## Privacy & Security
We take your privacy seriously. See our [Privacy Policy](https://entretien-ai.com/privacy) for details about:
- Data collection and usage
- Security measures
- Your privacy rights
## License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the [LICENSE](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
## the shader gradients
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
```
# Entretien AI TO DOs
## Feature 1: Multiple Language Support using i18n Next
### Steps:
1. **Setup i18n Configuration**:
- Install and configure next-i18next package
- Create language TypeScript files for supported languages
- Set up language detection and routing
2. **Implement Language Files**:
- Create translation files for each supported language
- Organize translations by feature/component
- Include metadata like language name and direction
3. **Add Language Switching**:
- Create language selector component
- Implement language switching logic
- Persist language preference
4. **Translate Content**:
- Update components to use translation keys
- Add translations for all static text
- Handle dynamic content translation
5. **Test Localization**:
- Verify translations in all supported languages
- Test RTL language support
- Validate language switching functionality
---
## Notes:
- 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
## Feature 2: Newsletter Subscription System
### Steps:
1. **Database Schema Setup**:
- Create newsletter subscriber table in Prisma schema
```prisma
model NewsletterSubscriber {
id String @id @default(cuid())
email String @unique
status String @default("active") // active, unsubscribed
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
```
2. **Email Validation & Processing**:
- Implement Zod schema for email validation
- Create server action for subscription handling
- Set up rate limiting for form submissions
```typescript
const newsletterSchema = z.object({
email: z.string().email("Please enter a valid email address")
});
```
3. **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
### Technical Requirements:
- Resend API integration
- PostgreSQL database
- Rate limiting middleware
- Email templating system
- Error handling and logging
### Security Considerations:
- Email validation and sanitization
- CSRF protection
- Rate limiting
- GDPR compliance
- Secure storage of subscriber data
---