Create stunning personal biography websites with professional portfolios, social media integration, and Credly certifications showcase
β’ π Documentation β’ π Quick Start β’ π€ Contributing
- π¨ 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
- π² 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
- π 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
- π 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
- π 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
Vue.js 3 (Composition API) + TypeScript
βββ πΌοΈ Quasar Framework (UI Components)
βββ ποΈ Pinia (State Management)
βββ π£οΈ Vue Router (Navigation)
βββ π¨ Particle.js (Animations)
βββ π± Responsive Design (Mobile-First)
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)
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
- Node.js 18+ or 20+
- npm 6.13.4+
- AWS Account with appropriate permissions
- AWS CLI configured (optional but recommended)
# 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
-
Clone and Setup
git clone https://github.com/4l3j4ndr0/my-bio.git cd my-bio npm install
-
AWS Configuration
# Configure AWS credentials (if not already done) aws configure # Or use AWS profiles npx ampx sandbox --profile your-aws-profile
-
Database Initialization
# Deploy AWS resources npx ampx sandbox # The database schema will be automatically created
-
Create Account
- Visit the platform and sign up with email
- Verify your email address
- Complete your profile setup
-
Build Your Profile
- Upload a professional photo
- Add your personal information
- Write a compelling biography
- Choose your custom subdomain
-
Add Social Networks
- Connect your LinkedIn, GitHub, and other profiles
- Toggle visibility for each platform
- Validate URLs automatically
-
Showcase Certifications
- Connect your Credly account
- Automatically sync your badges
- Display professional certifications
-
Customize Appearance
- Choose your brand colors
- Preview changes in real-time
- Optimize for mobile devices
// Example: Adding a new certification provider
export const useGeneralStore = defineStore("general", {
actions: {
async getNewProviderCertifications(username: string) {
// Implementation for new provider
},
},
});
<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>
# 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
<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>
export const useUserStore = defineStore("user", {
state: () => ({
currentUser: null,
isAuthenticated: false,
}),
getters: {
userName: (state) => state.currentUser?.name || "",
},
actions: {
async login(credentials) {
// Authentication logic
},
},
});
# Deploy to AWS
npx ampx sandbox deploy
# Deploy with specific environment
npx ampx sandbox deploy --profile production
-
Build the application
npm run build
-
Deploy AWS resources
npx ampx sandbox deploy
-
Configure custom domain (optional)
- Set up Route 53 hosted zone
- Configure SSL certificates
- Update DNS records
# Development
npx ampx sandbox --profile dev
# Staging
npx ampx sandbox --profile staging
# Production
npx ampx sandbox --profile production
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Add tests (if applicable)
- Commit your changes
git commit -m 'Add amazing feature'
- Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- 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
# Format code
npm run format
# Lint code
npm run lint
# Type check
npm run type-check
# Error: failed to resolve "extends":"@quasar/app-vite/tsconfig-preset"
# Solution: Update tsconfig.json with complete configuration
# Clean and restart
npx quasar clean --qconf
npx ampx sandbox
# Use Node.js 18+ or 20+
nvm use 20
npm install
# Clear cache and reinstall
rm -rf node_modules package-lock.json
npm install
# Enable debug logging
DEBUG=* npm run dev
# AWS Amplify debug
AWS_AMPLIFY_DEBUG=true npm run dev
- 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
- Lambda Cold Start: Optimized function packaging
- DynamoDB: Efficient query patterns and indexing
- S3: CloudFront CDN integration for global delivery
- API Gateway: Request/response caching
- 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
// 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";
};
This project is licensed under the MIT License - see the LICENSE file for details.
- 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