Skip to content

asimsinan/sdd-portfolio

Repository files navigation

Portfolio Management App

🤖 Development Approach

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.

🚀 Features

  • 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

🏗️ Architecture

  • 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

📁 Project Structure

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

🧪 Testing Strategy

Following Test-Driven Development (TDD) principles:

  1. Contract Tests - API contracts and data schemas
  2. Integration Tests - Component integration with real dependencies
  3. E2E Tests - End-to-end user workflows
  4. Unit Tests - Individual component testing
  5. Implementation - Feature implementation

🚀 Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL 12+
  • npm or yarn

Installation

  1. Clone the repository:
git clone <repository-url>
cd portfolio
  1. Install dependencies:
npm install
  1. Set up environment variables:
cp src/server/config/example.env src/server/.env
# Edit the .env file with your configuration
  1. Set up the database:
cd src/server
npx prisma generate
npx prisma db push
  1. Run the development servers:
npm run dev

Running Tests

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

📚 API Documentation

The API documentation is available at /api/docs when running the server.

Authentication Endpoints

  • POST /api/auth/register - Register a new developer
  • POST /api/auth/login - Login developer
  • GET /api/auth/profile - Get developer profile
  • PUT /api/auth/profile - Update developer profile

Project Endpoints (Coming Soon)

  • GET /api/projects - List projects
  • POST /api/projects - Create project
  • PUT /api/projects/:id - Update project
  • DELETE /api/projects/:id - Delete project

🗄️ Database Schema

Developer Entity

  • id - Unique identifier (CUID)
  • username - Unique username
  • email - Unique email address
  • displayName - Display name (optional)
  • bio - Developer bio (optional)
  • profileImage - Profile image URL (optional)
  • skills - Array of skills
  • socialLinks - Social media links (JSON)
  • createdAt - Creation timestamp
  • updatedAt - Last update timestamp

Project Entity

  • id - Unique identifier (CUID)
  • name - Project name
  • description - Project description
  • technologies - Array of technologies used
  • githubUrl - GitHub repository URL (optional)
  • liveDemoUrl - Live demo URL (optional)
  • screenshots - Array of screenshot URLs
  • status - Project status (ACTIVE, ARCHIVED, DRAFT)
  • featured - Featured project flag
  • createdAt - Creation timestamp
  • updatedAt - Last update timestamp
  • developerId - Foreign key to Developer

🔧 Development

TDD Workflow

  1. Write failing contract tests
  2. Write integration tests
  3. Write E2E tests
  4. Write unit tests
  5. Implement features to make tests pass
  6. Refactor and optimize

Code Standards

  • Follow ESLint configuration
  • Use TypeScript for type safety
  • Write comprehensive tests
  • Document all public APIs
  • Follow semantic versioning

📝 License

MIT License - see LICENSE file for details

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Follow TDD principles
  4. Write comprehensive tests
  5. Submit a pull request

📞 Support

For support and questions, please open an issue in the repository.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published