A modern, full-stack portfolio website built with Next.js 15, React 19, and TypeScript.
- Framework: Next.js 15.4.6
- React: 19.1.0
- TypeScript: 5.x
- Database: MySQL with Prisma ORM
- Styling: Tailwind CSS 4.x
- Animations: GSAP
- Deployment: Vercel
- Node.js 20 or higher
- npm, yarn, pnpm, or bun
- MySQL database (or compatible)
- Clone the repository:
git clone <repository-url>
cd my-project- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration- Generate Prisma client:
npx prisma generate- Run database migrations:
npx prisma migrate dev- Start the development server:
npm run devOpen http://localhost:3000 to see the result.
npm run dev- Start development server with Turbopacknpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run lint:fix- Fix ESLint errors automaticallynpm run format- Format code with Prettiernpm run format:check- Check code formattingnpm run type-check- Run TypeScript type checkingnpm run check- Run all checks (lint + format + type-check)
Before committing your code, ensure all checks pass:
npm run checkThis command runs:
- ESLint - Code linting and style checks
- Prettier - Code formatting verification
- TypeScript - Type checking
We use Prettier for consistent code formatting. Always format your code before committing:
# Format all files
npm run format
# Or check formatting without changing files
npm run format:checkWe use ESLint with Next.js configuration. Fix linting issues:
# Check for linting errors
npm run lint
# Auto-fix linting errors
npm run lint:fixTypeScript type checking is enforced. Run type checks:
npm run type-checkAll pull requests and pushes to main and develop branches automatically run:
- ✅ Lint Check - ESLint validation
- ✅ Type Check - TypeScript type validation
- ✅ Format Check - Prettier formatting validation
All checks must pass before merging PRs.
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes and ensure code quality:
npm run check
-
Format your code:
npm run format
-
Fix any linting issues:
npm run lint:fix
-
Commit your changes:
git commit -m "feat: your feature description" -
Push and create a Pull Request:
git push origin feature/your-feature-name
-
Wait for CI checks to pass - All GitHub Actions must succeed
-
Address any review feedback and ensure checks still pass
- Use TypeScript for all new files
- Follow ESLint rules (Next.js recommended config)
- Format code with Prettier (config in
.prettierrc) - Write meaningful commit messages
- Keep functions small and focused
- Add comments for complex logic
- Use meaningful variable and function names
Use conventional commit messages:
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
Example: feat: add user authentication system
my-project/
├── src/
│ ├── app/ # Next.js app router pages
│ ├── components/ # React components
│ ├── lib/ # Utility functions
│ ├── constants/ # App constants and data
│ └── types/ # TypeScript type definitions
├── prisma/ # Database schema and migrations
├── public/ # Static assets
└── .github/ # GitHub Actions workflows
The easiest way to deploy is using the Vercel Platform.
The project is configured for automatic deployments on push to main branch.