This application was built using Cursor AI Agent in auto mode with the Specification-Driven Development (SDD) methodology. The development process followed these principles:
- AI-Driven Development: Entire codebase generated and maintained by Cursor AI agent
- Specification-First: Features defined through comprehensive specifications before implementation
- Test-Driven Development: All code written following strict TDD principles with comprehensive test coverage
- Automated Implementation: Features implemented automatically based on detailed specifications and requirements
- Quality Assurance: Built-in quality checks and validation throughout the development process
The SDD approach ensures:
- Clear feature definitions and requirements
- Consistent implementation patterns
- Comprehensive test coverage
- Maintainable and scalable code architecture
- Documentation-driven development
A comprehensive portfolio management application for software developers to showcase their projects, skills, and professional experience.
- User Authentication: Secure registration and login with JWT tokens
- Project Management: Create, edit, and manage software projects
- File Uploads: Upload project screenshots and media
- GitHub Integration: Automatic repository information fetching
- Responsive Design: Mobile and desktop compatible
- Search & Filtering: Find projects quickly with advanced search
- Public Sharing: Share your portfolio with potential employers
- Frontend: React 18+ with Vite
- Backend: Express.js with Node.js
- Database: PostgreSQL with Prisma ORM
- Authentication: JWT-based with bcrypt password hashing
- Testing: Jest with comprehensive TDD approach
portfolio/
├── src/
│ ├── client/ # React frontend
│ └── server/ # Express backend
│ ├── docs/ # API documentation
│ ├── prisma/ # Database schema
│ └── config/ # Configuration files
├── tests/
│ ├── contracts/ # Contract tests
│ ├── integration/ # Integration tests
│ ├── e2e/ # End-to-end tests
│ └── unit/ # Unit tests
└── specs/ # Feature specifications
Following Test-Driven Development (TDD) principles:
- Contract Tests - API contracts and data schemas
- Integration Tests - Component integration with real dependencies
- E2E Tests - End-to-end user workflows
- Unit Tests - Individual component testing
- Implementation - Feature implementation
- Node.js 18+
- PostgreSQL 12+
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd portfolio- Install dependencies:
npm install- Set up environment variables:
cp src/server/config/example.env src/server/.env
# Edit the .env file with your configuration- Set up the database:
cd src/server
npx prisma generate
npx prisma db push- Run the development servers:
npm run dev# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverageThe API documentation is available at /api/docs when running the server.
POST /api/auth/register- Register a new developerPOST /api/auth/login- Login developerGET /api/auth/profile- Get developer profilePUT /api/auth/profile- Update developer profile
GET /api/projects- List projectsPOST /api/projects- Create projectPUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
id- Unique identifier (CUID)username- Unique usernameemail- Unique email addressdisplayName- Display name (optional)bio- Developer bio (optional)profileImage- Profile image URL (optional)skills- Array of skillssocialLinks- Social media links (JSON)createdAt- Creation timestampupdatedAt- Last update timestamp
id- Unique identifier (CUID)name- Project namedescription- Project descriptiontechnologies- Array of technologies usedgithubUrl- GitHub repository URL (optional)liveDemoUrl- Live demo URL (optional)screenshots- Array of screenshot URLsstatus- Project status (ACTIVE, ARCHIVED, DRAFT)featured- Featured project flagcreatedAt- Creation timestampupdatedAt- Last update timestampdeveloperId- Foreign key to Developer
- Write failing contract tests
- Write integration tests
- Write E2E tests
- Write unit tests
- Implement features to make tests pass
- Refactor and optimize
- Follow ESLint configuration
- Use TypeScript for type safety
- Write comprehensive tests
- Document all public APIs
- Follow semantic versioning
MIT License - see LICENSE file for details
- Fork the repository
- Create a feature branch
- Follow TDD principles
- Write comprehensive tests
- Submit a pull request
For support and questions, please open an issue in the repository.