Skip to content

jthan24/my-bio

Β 
Β 

Repository files navigation

πŸš€ BIO Platform - Personal Biography & Portfolio Builder

AWS Diagram

BIO Platform

AWS Amplify Vue.js Quasar TypeScript AWS CDK

Create stunning personal biography websites with professional portfolios, social media integration, and Credly certifications showcase

β€’ πŸ“– Documentation β€’ πŸš€ Quick Start β€’ 🀝 Contributing


✨ Features

🎯 Core Functionality

  • 🎨 Dynamic Personal Profiles: Create beautiful, responsive biography pages with custom themes
  • 🌐 Custom Subdomains: Each user gets their own subdomain (e.g., yourname.bio.awslearn.cloud)
  • πŸ“± Responsive Design: Optimized for desktop, tablet, and mobile devices
  • 🎭 Interactive Animations: Particle.js animations with customizable colors and effects

πŸ”— Social Media Integration

  • πŸ“² Multi-Platform Support: LinkedIn, GitHub, Medium, Facebook, Instagram, YouTube, Twitter/X
  • πŸ”— Smart URL Validation: Automatic validation of social media URLs
  • πŸ‘οΈ Visibility Controls: Show/hide specific social networks on your profile
  • 🎯 One-Click Redirects: Direct links to all your social platforms

πŸ† Professional Certifications

  • πŸŽ“ Credly Integration: Automatic fetching and display of Credly badges
  • πŸ”„ Real-time Updates: Sync your latest certifications automatically
  • πŸ–ΌοΈ Visual Badge Display: Professional badge showcase with click-to-verify functionality
  • πŸ“Š Certification Management: Easy management of multiple certification providers

πŸ” Authentication & Security

  • πŸ”’ AWS Cognito Integration: Secure user authentication and authorization
  • πŸ‘€ User Management: Complete user profile management system
  • πŸ›‘οΈ Role-based Access: Secure API endpoints with proper authorization
  • πŸ”‘ Session Management: Automatic token refresh and session handling

🎨 Customization Options

  • 🌈 Color Themes: Custom color picker for personalized branding
  • πŸ“Έ Image Upload: Secure image storage with AWS S3 integration
  • ✏️ Rich Text Editing: Comprehensive biography and description editing
  • 🎯 SEO Optimization: Meta tags, Open Graph, and Twitter Card support

πŸ—οΈ Architecture

Frontend Stack

Vue.js 3 (Composition API) + TypeScript
β”œβ”€β”€ πŸ–ΌοΈ Quasar Framework (UI Components)
β”œβ”€β”€ πŸ—‚οΈ Pinia (State Management)
β”œβ”€β”€ πŸ›£οΈ Vue Router (Navigation)
β”œβ”€β”€ 🎨 Particle.js (Animations)
└── πŸ“± Responsive Design (Mobile-First)

Backend Infrastructure (AWS)

AWS Amplify Fullstack
β”œβ”€β”€ πŸ” Amazon Cognito (Authentication)
β”œβ”€β”€ πŸ—„οΈ Amazon DynamoDB (Database)
β”œβ”€β”€ πŸ“¦ Amazon S3 (File Storage)
β”œβ”€β”€ ⚑ AWS Lambda (Serverless Functions)
β”œβ”€β”€ 🌐 Amazon API Gateway (REST API)
└── πŸš€ AWS CDK (Infrastructure as Code)

Key Components Architecture

src/
β”œβ”€β”€ πŸ“„ pages/
β”‚   β”œβ”€β”€ IndexPage.vue          # Admin dashboard for profile editing
β”‚   β”œβ”€β”€ IndexUsersPage.vue     # Public profile display
β”‚   └── Login.vue              # Authentication page
β”œβ”€β”€ 🧩 components/
β”‚   └── BioComponent.vue       # Main profile display component
β”œβ”€β”€ πŸ—‚οΈ stores/
β”‚   β”œβ”€β”€ User.ts                # User authentication state
β”‚   └── General.ts             # Application data management
β”œβ”€β”€ πŸ›£οΈ router/
β”‚   β”œβ”€β”€ routes.ts              # Admin routes
β”‚   └── routesUser.ts          # Public profile routes
└── πŸ”§ amplify/
    β”œβ”€β”€ backend.ts             # AWS infrastructure definition
    β”œβ”€β”€ data/resource.ts       # Database schema
    └── functions/             # Lambda functions

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ or 20+
  • npm 6.13.4+
  • AWS Account with appropriate permissions
  • AWS CLI configured (optional but recommended)

1-Minute Setup

# Clone the repository
git clone https://github.com/4l3j4ndr0/my-bio.git
cd bio-platform

# Install dependencies
npm install

# Start development server
npm run dev

# In another terminal, start AWS Amplify sandbox
npx ampx sandbox

πŸŽ‰ That's it! Your BIO Platform is now running at http://localhost:9000


πŸ› οΈ Installation

Detailed Installation Steps

  1. Clone and Setup

    git clone https://github.com/4l3j4ndr0/my-bio.git
    cd my-bio
    npm install
  2. AWS Configuration

    # Configure AWS credentials (if not already done)
    aws configure
    
    # Or use AWS profiles
    npx ampx sandbox --profile your-aws-profile
  3. Database Initialization

    # Deploy AWS resources
    npx ampx sandbox
    
    # The database schema will be automatically created

πŸ“± Usage

For End Users

  1. Create Account

    • Visit the platform and sign up with email
    • Verify your email address
    • Complete your profile setup
  2. Build Your Profile

    • Upload a professional photo
    • Add your personal information
    • Write a compelling biography
    • Choose your custom subdomain
  3. Add Social Networks

    • Connect your LinkedIn, GitHub, and other profiles
    • Toggle visibility for each platform
    • Validate URLs automatically
  4. Showcase Certifications

    • Connect your Credly account
    • Automatically sync your badges
    • Display professional certifications
  5. Customize Appearance

    • Choose your brand colors
    • Preview changes in real-time
    • Optimize for mobile devices

For Developers

Adding New Features

// Example: Adding a new certification provider
export const useGeneralStore = defineStore("general", {
  actions: {
    async getNewProviderCertifications(username: string) {
      // Implementation for new provider
    },
  },
});

Custom Components

<template>
  <bio-component
    :primary-color="color"
    :user-image="userImage"
    :user-name="userName"
    :user-position="userPosition"
    :user-bio="userBio"
    :user-social-networks="userSocialNetworks"
    :user-credly-badges="userCredlyBadges"
  />
</template>

πŸ”§ Development

Development Commands

# Start development server
npm run dev

# Build for production
npm run build

# Start AWS Amplify sandbox
npx ampx sandbox

# Clean Quasar cache
npx quasar clean

# Update dependencies
npm update

# Run with specific AWS profile
npx ampx sandbox --profile your-profile

Code Structure Best Practices

Vue 3 Composition API

<script setup lang="ts">
import { ref, onMounted, computed } from 'vue';
import { useUserStore } from 'src/stores/User';

const user = useUserStore();
const userData = ref(null);

const computedValue = computed(() => {
  return userData.value?.name || 'Default Name';
});

onMounted(async () => {
  userData.value = await user.getCurrentUser();
});
</script>

Pinia Store Pattern

export const useUserStore = defineStore("user", {
  state: () => ({
    currentUser: null,
    isAuthenticated: false,
  }),

  getters: {
    userName: (state) => state.currentUser?.name || "",
  },

  actions: {
    async login(credentials) {
      // Authentication logic
    },
  },
});

πŸš€ Deployment

AWS Amplify Deployment

# Deploy to AWS
npx ampx sandbox deploy

# Deploy with specific environment
npx ampx sandbox deploy --profile production

Manual Deployment Steps

  1. Build the application

    npm run build
  2. Deploy AWS resources

    npx ampx sandbox deploy
  3. Configure custom domain (optional)

    • Set up Route 53 hosted zone
    • Configure SSL certificates
    • Update DNS records

Environment-Specific Deployments

# Development
npx ampx sandbox --profile dev

# Staging
npx ampx sandbox --profile staging

# Production
npx ampx sandbox --profile production

🀝 Contributing

We welcome contributions! Here's how you can help:

Getting Started

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Make your changes
  4. Add tests (if applicable)
  5. Commit your changes
    git commit -m 'Add amazing feature'
  6. Push to the branch
    git push origin feature/amazing-feature
  7. Open a Pull Request

Development Guidelines

  • Follow Vue 3 Composition API patterns
  • Use TypeScript for type safety
  • Follow Quasar Framework conventions
  • Write meaningful commit messages
  • Add documentation for new features
  • Ensure responsive design compatibility

Code Style

# Format code
npm run format

# Lint code
npm run lint

# Type check
npm run type-check

πŸ› Troubleshooting

Common Issues

1. TypeScript Configuration Error

# Error: failed to resolve "extends":"@quasar/app-vite/tsconfig-preset"
# Solution: Update tsconfig.json with complete configuration

2. AWS Amplify Sandbox Issues

# Clean and restart
npx quasar clean --qconf
npx ampx sandbox

3. Node.js Version Compatibility

# Use Node.js 18+ or 20+
nvm use 20
npm install

4. Dependency Issues

# Clear cache and reinstall
rm -rf node_modules package-lock.json
npm install

Debug Mode

# Enable debug logging
DEBUG=* npm run dev

# AWS Amplify debug
AWS_AMPLIFY_DEBUG=true npm run dev

πŸ“Š Performance Optimization

Frontend Optimization

  • Code Splitting: Automatic route-based code splitting
  • Lazy Loading: Components loaded on demand
  • Image Optimization: WebP format support with fallbacks
  • Caching: Intelligent browser caching strategies

Backend Optimization

  • Lambda Cold Start: Optimized function packaging
  • DynamoDB: Efficient query patterns and indexing
  • S3: CloudFront CDN integration for global delivery
  • API Gateway: Request/response caching

πŸ”’ Security

Security Features

  • Authentication: AWS Cognito with MFA support
  • Authorization: Role-based access control
  • Data Encryption: At-rest and in-transit encryption
  • Input Validation: Comprehensive input sanitization
  • CORS: Properly configured cross-origin policies

Security Best Practices

// Input validation example
const validateUrl = (val: string) => {
  const pattern =
    /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
  return pattern.test(val) || "Please enter a valid URL";
};

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • AWS Amplify Team for the amazing fullstack platform
  • Vue.js Community for the incredible framework
  • Quasar Framework for the beautiful UI components
  • Credly for the certification API integration
  • All Contributors who help make this project better

Made with ❀️ by Alejandro Castaneda Ocampo

⭐ Star us on GitHub

About

A public web repository using amplify Gen 2.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vue 65.4%
  • TypeScript 24.4%
  • JavaScript 9.3%
  • Other 0.9%