A comprehensive full-stack web development portfolio showcasing modern technologies, best practices, and scalable application architectures.
- Docker - Download Docker Desktop
- Docker Compose (included with Docker Desktop)
Each project includes Docker support for easy deployment and development.
Dockerfile for React applications:
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Dockerfile for Node.js APIs:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npx prisma generate
EXPOSE 3001
CMD ["npm", "start"]
docker-compose.yml
for full-stack deployment:
version: '3.8'
services:
# Databases
todo-db:
image: postgres:15-alpine
environment:
POSTGRES_DB: todoapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- todo_data:/var/lib/postgresql/data
ports:
- "5433:5432"
social-db:
image: sqlite:3.40-alpine
volumes:
- social_data:/data
# Backend APIs
todo-api:
build: ./todo-api
environment:
DATABASE_URL: postgresql://user:password@todo-db:5432/todoapp
PORT: 3001
depends_on:
- todo-db
ports:
- "3001:3001"
social-api:
build: ./social-api
environment:
DATABASE_URL: sqlite:///data/social.db
PORT: 3002
depends_on:
- social-db
volumes:
- social_data:/data
ports:
- "3002:3002"
# Frontend Applications
todo-frontend:
build: ./todo
ports:
- "3000:80"
environment:
REACT_APP_API_URL: http://localhost:3001
social-frontend:
build: ./social
ports:
- "3003:80"
environment:
REACT_APP_API_URL: http://localhost:3002
volumes:
todo_data:
social_data:
# Build and run todo frontend
cd todo
docker build -t todo-frontend .
docker run -p 3000:80 todo-frontend
# Build and run todo API
cd todo-api
docker build -t todo-api .
docker run -p 3001:3001 todo-api
# Start all services
docker-compose up -d
# View logs
docker-compose logs -f
# Stop all services
docker-compose down
# Rebuild and restart
docker-compose up --build -d
# Access database containers
docker-compose exec todo-db psql -U user -d todoapp
docker-compose exec social-db sqlite3 /data/social.db
# Backup databases
docker-compose exec todo-db pg_dump -U user todoapp > backup.sql
docker cp $(docker-compose ps -q social-db):/data/social.db ./backup-social.db
For development with hot reload:
docker-compose.dev.yml
:
version: '3.8'
services:
todo-frontend:
build:
context: ./todo
dockerfile: Dockerfile.dev
volumes:
- ./todo/src:/app/src
- ./todo/public:/app/public
ports:
- "3000:3000"
todo-api:
build:
context: ./todo-api
dockerfile: Dockerfile.dev
volumes:
- ./todo-api:/app
- /app/node_modules
ports:
- "3001:3001"
Dockerfile.dev
for hot reload:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "dev"]
The PWD (Portfolio Web Development) Workspace is a comprehensive collection of modern web applications demonstrating full-stack development capabilities. This monorepo houses multiple projects ranging from simple React applications to complex full-stack platforms, showcasing expertise in:
- Modern Frontend Development with React 18 and Vite
- RESTful API Design with Node.js and Express
- Database Integration using Prisma ORM
- Responsive Web Design with mobile-first approach
- State Management with React Context API
- Type-Safe Development practices
- Code Quality and development best practices
Each project is self-contained with its own dependencies, configuration, and deployment readiness, making this workspace ideal for both learning and portfolio demonstration.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PWD Workspace β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β React β β React β β React β β
β β Frontend β β Frontend β β Frontend β β
β β Apps β β Apps β β Apps β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ β
β β Node.js β β Node.js β β
β β REST β β REST β β
β β APIs β β APIs β β
β βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Prisma β β SQLite β β PostgreSQL β β
β β ORM β β β β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Technology | Version | Description |
---|---|---|
React | 18.2.0 | Modern React with hooks and functional components |
Vite | 5.0.8 | Lightning-fast build tool and dev server |
ESLint | 8.55.0 | Code linting and formatting |
TypeScript | 18.2.43 | Type-safe JavaScript development |
Technology | Version | Description |
---|---|---|
Node.js | 16+ | JavaScript runtime environment |
Express.js | 5.1.0 | Minimalist web framework |
Prisma | 6.13.0 | Next-generation ORM and database toolkit |
SQLite | Latest | Embedded database for development |
PostgreSQL | Latest | Advanced relational database |
Tool | Purpose |
---|---|
Nodemon | Auto-restart server during development |
CORS | Cross-origin resource sharing middleware |
Vite | Fast refresh and optimized builds |
pwd2-1/
βββ π app/ # Main application project
βββ π dev/ # Development utilities and tools
βββ π hello-context/ # React Context API demonstration
β βββ src/
β βββ package.json
β βββ vite.config.js
βββ π hello-react/ # Basic React + Vite setup
β βββ src/
β βββ public/
β βββ index.html
β βββ package.json
βββ π mobile/ # Mobile-responsive application
β βββ src/
β βββ public/
β βββ package.json
βββ π movie/ # Movie database application
β βββ src/
β βββ public/
β βββ package.json
βββ π social/ # Social media platform frontend
β βββ src/
β βββ public/
β βββ package.json
βββ π social-api/ # Social media backend API
β βββ prisma/
β βββ routes/
β βββ package.json
βββ π todo/ # Todo list application frontend
β βββ src/
β βββ public/
β βββ package.json
βββ π todo-api/ # Todo list backend API
βββ prisma/
βββ crud/
βββ package.json
Overview: A minimal React application demonstrating core React concepts with modern tooling.
π§ Tech Stack:
- React 18.2.0
- Vite 5.0.8
- ESLint 8.55.0
β¨ Features:
- β‘ Fast Refresh development
- π― ESLint code quality
- π¦ Optimized builds
- π§© Component-based architecture
π Quick Start:
cd hello-react
npm run dev
Overview: Demonstrates advanced React patterns including Context API for global state management.
π§ Tech Stack:
- React 18.2.0
- Context API
- Vite 5.0.8
β¨ Features:
- π Global state management
- π Context providers
- π State persistence
- π― Type-safe state updates
π Quick Start:
cd hello-context
npm run dev
Overview: Interactive todo list application with full CRUD operations and local state management.
π§ Tech Stack:
- React 18.2.0
- Vite 5.0.8
- Local State Management
β¨ Features:
- β Add, edit, delete todos
- π Real-time updates
- πΎ Local storage persistence
- π± Responsive design
- π¨ Clean UI/UX
π Quick Start:
cd todo
npm run dev
Overview: Modern social media platform frontend with user interactions and real-time features.
π§ Tech Stack:
- React 18.2.0
- Vite 5.0.8
- Component Architecture
- Responsive CSS
β¨ Features:
- π₯ User profiles
- π Post creation and sharing
- π¬ Interactive comments
- π Content discovery
- π± Mobile-optimized
- π¨ Modern UI design
π Quick Start:
cd social
npm run dev
Overview: Movie database application with search, filtering, and detailed movie information.
π§ Tech Stack:
- React 18.2.0
- Vite 5.0.8
- API Integration
- Responsive Design
β¨ Features:
- π Advanced search
- π¬ Movie details and ratings
- πΊ Cast and crew information
- β Favorites system
- π± Responsive layout
- π¨ Beautiful UI
π Quick Start:
cd movie
npm run dev
Overview: Mobile-responsive web application showcasing adaptive design patterns.
π§ Tech Stack:
- React 18.2.0
- Vite 5.0.8
- CSS Media Queries
- Responsive Design
β¨ Features:
- π± Mobile-first approach
- π» Tablet optimization
- π₯οΈ Desktop enhancement
- π¨ Adaptive layouts
- β‘ Touch-friendly interactions
π Quick Start:
cd mobile
npm run dev
Overview: RESTful API providing backend services for todo applications with data persistence.
π§ Tech Stack:
- Node.js
- Express.js 5.1.0
- Prisma 6.13.0
- SQLite
π Features:
- π RESTful CRUD operations
- πΎ SQLite database
- π‘οΈ Input validation
- π Data relationships
- π Advanced querying
π‘ API Endpoints:
GET /todos
- Retrieve all todosPOST /todos
- Create new todoPUT /todos/:id
- Update todoDELETE /todos/:id
- Delete todo
π Quick Start:
cd todo-api
npm install
npm start
Overview: Comprehensive backend API for social media platform with user management and content handling.
π§ Tech Stack:
- Node.js
- Express.js 5.1.0
- Prisma 6.13.0
- PostgreSQL/SQLite
π Features:
- π€ User authentication
- π Content management
- π¬ Comment system
- π Relationship handling
- π Analytics ready
- π‘οΈ Security best practices
π‘ API Endpoints:
GET /users
- User managementPOST /posts
- Content creationGET /feed
- Activity feedPOST /comments
- Comment system
π Quick Start:
cd social-api
npm install
npm start
Overview: Shared utilities, configuration files, and development tools for the entire workspace.
π§ Includes:
- π§ Build scripts
- βοΈ Configuration files
- π οΈ Development utilities
- π Shared resources
- π§ͺ Testing setup
Before running these projects, ensure you have the following installed:
- Node.js (v16 or higher) - Download
- npm (v8 or higher) or yarn - Comes with Node.js
- Git - For version control
- SQLite (for API projects) - Download
- PostgreSQL (optional, for production APIs) - Download
-
Clone the repository
git clone https://github.com/your-username/pwd-workspace.git cd pwd-workspace
-
Install dependencies for all projects
# Frontend applications cd hello-react && npm install && cd .. cd hello-context && npm install && cd .. cd todo && npm install && cd .. cd social && npm install && cd .. cd movie && npm install && cd .. cd mobile && npm install && cd .. # Backend APIs cd todo-api && npm install && cd .. cd social-api && npm install && cd ..
-
Set up databases (for API projects)
cd todo-api npx prisma generate npx prisma migrate dev cd .. cd social-api npx prisma generate npx prisma migrate dev cd ..
Frontend Applications:
# Terminal 1 - Hello React
cd hello-react && npm run dev
# Terminal 2 - Todo App
cd todo && npm run dev
# Terminal 3 - Social Platform
cd social && npm run dev
Backend APIs:
# Terminal 1 - Todo API
cd todo-api && npm start
# Terminal 2 - Social API
cd social-api && npm start
Build frontend applications:
cd hello-react && npm run build && cd ..
cd todo && npm run build && cd ..
cd social && npm run build && cd ..
- Todo API:
http://localhost:3001
- Social API:
http://localhost:3002
Most API endpoints require authentication. Include the following header:
Authorization: Bearer <your-token>
{
"success": true,
"data": {},
"message": "Operation completed successfully"
}
# Run linting for specific projects
cd hello-react && npm run lint && cd ..
cd todo && npm run lint && cd ..
cd social && npm run lint && cd ..
# For TypeScript projects (if applicable)
cd your-project && npx tsc --noEmit && cd ..
# Generate Prisma client
npx prisma generate
# Run migrations
npx prisma migrate dev
# View database
npx prisma studio
# Reset database (development only)
npx prisma migrate reset
Create .env
files in API projects:
.env.example
:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/dbname"
# JWT
JWT_SECRET="your-secret-key"
# Server
PORT=3001
NODE_ENV="development"
-
Build the application
cd your-frontend-project npm run build
-
Deploy to Vercel
vercel --prod
-
Or deploy to Netlify
netlify deploy --prod --dir=dist
-
Set environment variables
railway login railway link railway variables set DATABASE_URL=<your-db-url> railway variables set JWT_SECRET=<your-secret>
-
Deploy
railway up
Project | Status | Database | Documentation | Testing |
---|---|---|---|---|
hello-react | β Complete | β N/A | β Basic | β None |
hello-context | β Complete | β N/A | β Basic | β None |
todo | β Complete | β N/A | β Basic | β None |
social | β Complete | β N/A | β Basic | β None |
movie | β Complete | β N/A | β Basic | β None |
mobile | β Complete | β N/A | β Basic | β None |
todo-api | β Complete | β SQLite | β API | β None |
social-api | β Complete | β PostgreSQL | β API | β None |
Legend:
- β Complete - Fully functional
- π In Development - Active development
- β N/A - Not applicable
We welcome contributions to this workspace! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes
- Test thoroughly
- Commit your changes:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow ESLint configuration
- Write meaningful commit messages
- Update README for new features
- Test your changes thoroughly
- Follow existing code style
- Keep projects self-contained
- Use consistent naming conventions
- Document API changes
- Update dependencies regularly
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 PWD Workspace
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Project Maintainer: [Khun Kyaw Hla]
- π§ Email: bwarpay.bp8@gmail.com
- πΌ LinkedIn: Your LinkedIn Profile
- π GitHub: your-username
- π Portfolio: your-portfolio-website.com
For questions, suggestions, or collaboration opportunities, please don't hesitate to reach out!
- Initial release of PWD Workspace
- All frontend applications (React 18 + Vite)
- Backend APIs (Node.js + Express + Prisma)
- Comprehensive documentation
- Development and deployment guides
- Updated to React 18.2.0
- Upgraded to Vite 5.0.8
- Enhanced project structure
- Improved code quality standards
- Database connection issues
- Build optimization problems
- Documentation inconsistencies
Built with β€οΈ using modern web technologies
Show your support by starring this repository!