A modern, interactive website for the Boston University Data Science Association (BU-DSA). Built with vanilla HTML, CSS, and JavaScript, featuring a sleek dark theme with glassmorphism effects, smooth animations, and comprehensive event management.
[https://bu-data-science-association.github.io/budsa/]
- Modern Design: Dark theme with glassmorphism effects and animated particle backgrounds
- Fully Responsive: Optimized for desktop, tablet, and mobile devices with dedicated breakpoints
- Interactive Elements: Smooth scroll animations, ripple effects, and parallax scrolling
- Performance Optimized: Uses modern browser APIs like
IntersectionObserverandrequestAnimationFrame - Accessible: Semantic HTML structure with proper ARIA labels and keyboard navigation
- No Dependencies: Pure vanilla JavaScript - no frameworks or libraries required
- Dynamic Event Sorting: Events automatically sorted by date (chronological order)
- Smart Filtering: Filter events by category (All, Workshops, Social + Industry, Hackathons)
- Upcoming Events Sidebar: Dynamically populated with next 3 upcoming events
- Past Events Page: Dedicated page for archiving past events with easy copy-paste functionality
- Date-Aware Updates: Sidebar automatically updates as events pass their dates
- Theme Toggle: Switch between default purple/blue and red/pink themes
- Mobile Navigation: Slide-out hamburger menu with smooth animations
- Form Integration: Google Sheets integration for member signups
- Scroll Animations: Staggered card animations as you scroll through sections
- HTML5: Semantic markup with modern HTML features and SEO optimization
- CSS3: Custom styling with CSS Grid, Flexbox, animations, and CSS variables for theming
- Vanilla JavaScript (ES6+): Modern JavaScript with modules, arrow functions, and async/await
- Google Fonts: Inter font family for clean, modern typography
- Google Apps Script: Backend integration for form submissions
dsa-website-deployable/
├── assets/ # Images, icons, and static assets
│ ├── budsa_logo-modified.png # Main logo
│ ├── default_pfp.svg # Default profile picture
│ └── [team member photos] # Team member profile images
├── pasteventspage/ # Past events page and assets
│ ├── pastevents.html # Past events page HTML
│ ├── pastevents.css # Past events specific styling
│ └── pastevents.js # Past events functionality
├── infodocu/ # Documentation files
│ ├── documentation.md # Comprehensive technical documentation
│ ├── google apps script.md # Google Sheets integration guide
│ └── SEO_IMPLEMENTATION_GUIDE.md # SEO optimization details
├── index.html # Main website HTML
├── styles.css # Main stylesheet with animations
├── script.js # Core JavaScript functionality
├── sitemap.xml # SEO sitemap
├── robots.txt # Search engine directives
└── README.md # This file
- A modern web browser (Chrome 60+, Firefox 55+, Safari 12+, Edge 79+)
- A local web server (optional, but recommended for full functionality)
-
Clone the repository
git clone [your-repository-url] cd dsa-website-deployable -
Open the website
Option A: Direct file opening
- Simply double-click
index.htmlto open in your browser
Option B: Using a local server (recommended)
# Using Python 3 python -m http.server 8000 # Using Node.js (if you have it installed) npx serve . # Using PHP php -S localhost:8000 # Using Live Server (VS Code extension) # Right-click index.html and select "Open with Live Server"
Then open
http://localhost:8000in your browser. - Simply double-click
- Use the navigation bar to jump to different sections with smooth scrolling
- On mobile, tap the hamburger menu (☰) to access navigation links
- Click the theme toggle button (🟣) to switch between color themes
- Access "Past Events" page via the navigation menu
- Main Events Page: View all upcoming events sorted chronologically
- Event Filtering: Use filter buttons to view specific event categories
- Upcoming Events Sidebar: Always shows the next 3 upcoming events
- Past Events: Manually move events to the Past Events page by copying HTML
- When an event passes, copy its HTML from the main page
- Navigate to the Past Events page
- Paste the event HTML in the designated area (marked with comments)
- Delete the event from the main page
- The upcoming events sidebar will automatically update
- Fill out the join form to express interest in the club
- Form data is automatically sent to Google Sheets for processing
- All fields are required for submission
The website supports two built-in themes:
- Default Theme: Purple/blue gradient with modern aesthetics
- Red Theme: Red/pink gradient with alternative color scheme
- Themes can be toggled via the theme button in the navigation
Colors are defined using CSS custom properties in styles.css:
:root {
--primary-color: #7C3AED;
--secondary-color: #3B82F6;
--accent-color: #A855F7;
/* ... more variables */
}- Copy an existing event card structure from
index.html - Update the
data-categoryanddata-dateattributes - Modify the title, date/time/location, and description
- Events will automatically sort by date
- Update team member cards in the respective sections
- Replace profile images in the
assets/folder - Update names, titles, and descriptions
- Modify project cards in the projects section
- Update project descriptions and technologies used
- The contact form integrates with Google Sheets via Google Apps Script
- See
infodocu/google apps script.mdfor setup instructions - Update the
GOOGLE_SCRIPT_URLinscript.jswith your script URL
- HTML: Semantic structure with clear section divisions and proper SEO meta tags
- CSS: Organized by component type with CSS variables for theming
- JavaScript: Modular functions with clear naming conventions and ES6+ features
- Event Sorting: JavaScript Date objects for chronological ordering
- Dynamic Sidebar: Real-time filtering and population of upcoming events
- Scroll Animations:
IntersectionObserverfor performance-optimized animations - Responsive Design: CSS Grid with
auto-fitandminmax()for flexible layouts - Mobile Menu: CSS transforms with JavaScript event handling
- Theme System: CSS custom properties with localStorage persistence
- Uses
requestAnimationFramefor smooth parallax effects - Lazy loading for non-critical animations
- Optimized image formats and sizes
- Minimal JavaScript bundle with no external dependencies
- Desktop: Default layout (769px+)
- Tablet: 768px and below
- Mobile: 480px and below
- Hamburger navigation menu
- Touch-optimized button sizes (minimum 44px)
- Stacked card layouts
- Optimized typography scaling
- Full-width background coverage
- Comprehensive meta tags for social media sharing
- Structured data markup for search engines
- Semantic HTML structure
- Optimized page titles and descriptions
- XML sitemap for search engine crawling
- ARIA labels for interactive elements
- Keyboard navigation support
- High contrast color schemes
- Semantic HTML structure
- Alt text for images
- Chrome: 60+ ✅
- Firefox: 55+ ✅
- Safari: 12+ ✅
- Edge: 79+ ✅
- Mobile Safari: iOS 12+ ✅
- Chrome Mobile: Android 8+ ✅
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Test thoroughly on different devices and browsers
- Commit your changes
git commit -m "Add: description of your changes" - Push to your branch
git push origin feature/your-feature-name
- Create a Pull Request
- Follow the existing code style and naming conventions
- Test on multiple browsers and devices (use browser dev tools)
- Keep the site lightweight and fast
- Maintain accessibility standards
- Update documentation if adding new features
- Test both themes when making visual changes
This project is licensed under the MIT License - see the LICENSE file for details.
- Email: [email protected]
- GitHub: BU Data Science Association
- Instagram: @bu_dsa
- Slack: Join our community workspace
- BU-DSA Executive Board for content, feedback, and testing
- Boston University for institutional support and resources
- The open-source community for inspiration and best practices
- Modern web development community for CSS and JavaScript techniques
- ✅ Complete event management system with chronological sorting
- ✅ Dedicated Past Events page with easy management
- ✅ Dynamic upcoming events sidebar
- ✅ Theme switching functionality
- ✅ Enhanced mobile responsiveness
- ✅ Google Sheets form integration
- ✅ Comprehensive SEO optimization
- ✅ Performance optimizations and code cleanup
Built with ❤️ by the BU Data Science Association
Last updated: January 2025