The Stellar Dev Dashboard now features a comprehensive interactive tutorial system designed to onboard new users and teach them all dashboard features through engaging, step-by-step guided tours.
-
Welcome to Stellar Dashboard (3 min, Beginner)
- Connect wallet or enter public key
- Switch between networks (Testnet/Mainnet)
- Navigate the sidebar
- View account overview
-
Building & Signing Transactions (5 min, Intermediate)
- Use the transaction builder
- Sign transactions with wallets
- Simulate before submitting
-
Soroban Smart Contracts (7 min, Advanced)
- Enter contract addresses
- Browse contract ABIs
- Invoke contract functions
-
Decentralized Exchange (DEX) (6 min, Intermediate)
- Explore order books
- View spreads and depth charts
- Use path payment finder
-
Portfolio Analytics (4 min, Beginner)
- View USD portfolio value
- Analyze asset breakdown
- Compare multiple accounts
-
Setting Up Alerts (5 min, Intermediate)
- Create custom alert rules
- Configure thresholds and frequencies
- Manage notifications
-
Wallet Integration (4 min, Beginner)
- Connect Freighter wallet
- Use Ledger hardware wallet
- Understand security best practices
Each tutorial includes:
- Embedded video walkthrough link
- Step-by-step visual guides
- Real-time demonstrations
- Best practices and tips
- Overall Completion: Track percentage of completed tutorials
- Category Progress: Monitor progress by feature category
- Time Tracking: See time spent on each tutorial
- Step Persistence: Resume tutorials where you left off
Earn achievements for completing tutorials:
- Getting Started 🎉 - Complete your first tutorial
- Transaction Builder ⚡ - Master transaction building
- Contract Expert 🎓 - Learn Soroban contracts
- DEX Trader 📈 - Explore the DEX
- Tour Master 🏆 - Complete all tutorials
- Spotlight Highlighting: Target elements pulse with visual focus
- Smart Positioning: Tooltips automatically position for best visibility
- Interactive Hints: Pro tips and actionable guidance
- Prerequisites: Locked tours until prerequisites are met
- Smooth Animations: Engaging transitions and effects
- Click the floating help button (📚) in the bottom-right corner
- Browse available tutorials by category
- Click "Start" on any unlocked tutorial
- Follow the step-by-step guided tour
- Click the help button to open the tutorial panel
- See your overall completion percentage in the progress ring
- View completed tutorials marked with a checkmark
- Check category-specific progress
- Open the tutorial panel
- Video links appear on the first step of each tour
- Click "Watch Video Tutorial" to open in a new tab
- Videos are hosted on Vimeo for reliable streaming
- Click the trophy icon (🏆) in the tutorial panel
- View all earned achievements
- See which achievements are still available
Edit src/lib/tutorialSystem.js and add to the TOURS object:
'new-feature': {
id: 'new-feature',
title: 'Feature Name',
description: 'Brief description',
category: 'Category Name',
estimatedTime: '5 min',
difficulty: 'beginner', // or 'intermediate', 'advanced'
videoUrl: 'https://player.vimeo.com/video/YOUR_VIDEO_ID',
thumbnail: '🎨', // emoji icon
prerequisites: ['welcome'], // optional, array of prerequisite tour IDs
steps: [
{
id: 'step-1',
target: '[data-tour="element-selector"]',
title: 'Step Title',
content: 'Step description explaining what to do',
placement: 'bottom', // or 'top', 'left', 'right'
action: 'Try clicking the button',
interactiveHint: 'Pro tip: This is a helpful hint',
},
// Add more steps...
],
}Add data-tour attributes to elements you want to highlight:
<button data-tour="my-feature-button">
Click Me
</button>Add help topics to the HELP_ENTRIES object in tutorialSystem.js:
'new-concept': {
title: 'Concept Name',
content: 'Detailed explanation of the concept',
learnMore: 'https://link-to-documentation',
}Add to the ACHIEVEMENTS object in tutorialSystem.js:
'new-achievement': {
id: 'new-achievement',
title: 'Achievement Name',
description: 'How to earn this achievement',
icon: '🎖️',
}Then add logic in tutorialSystem.checkAchievements() to award it:
if (/* condition */) {
achievements.push('new-achievement');
}The main floating button and tutorial browser panel.
Props: None (self-contained)
Features:
- Category filtering
- Progress display
- Achievement showcase
- Recommended next tour
- Tour reset functionality
Renders the spotlight overlay and manages tour state.
Props:
tourId: string - ID of the tour to displayonClose: function - Called when tour ends
Features:
- Target element highlighting
- Automatic scrolling
- Step persistence
- Timer tracking
The step tooltip with content and navigation.
Props:
step: object - Current step datastepIndex: number - Current step indextotalSteps: number - Total steps in tourposition: object - Tooltip positiononNext: function - Next step handleronPrev: function - Previous step handleronSkip: function - Skip tour handlertour: object - Tour metadata
Features:
- Progress bar
- Video link (first step)
- Interactive hints
- Action prompts
- Navigation controls
Browse and search all video tutorials.
Props:
onClose: function - Called when closed
Features:
- Search functionality
- Category filtering
- Difficulty filtering
- Grid layout
- Completion badges
Detailed progress tracking and statistics.
Props:
onClose: function - Called when closed
Features:
- Overall completion stats
- Achievement display
- Category progress
- Time tracking
- Completed tutorial list
All tutorial state is stored in localStorage:
tutorial_state: Completion status, step positions, timerstutorial_progress: Progress percentages per tourtutorial_achievements: List of earned achievement IDs
// Core methods
tutorialSystem.getTour(tourId)
tutorialSystem.getTours()
tutorialSystem.getToursByCategory(category)
tutorialSystem.getCategories()
// Progress tracking
tutorialSystem.isCompleted(tourId)
tutorialSystem.complete(tourId)
tutorialSystem.getProgress(tourId)
tutorialSystem.getOverallProgress()
// Step management
tutorialSystem.getSavedStep(tourId)
tutorialSystem.saveStep(tourId, stepIndex)
// Achievements
tutorialSystem.getAchievements()
tutorialSystem.checkAchievements()
// Recommendations
tutorialSystem.getRecommendedTour()
// Time tracking
tutorialSystem.startTimer(tourId)
tutorialSystem.stopTimer(tourId)
tutorialSystem.getDuration(tourId)
// Reset
tutorialSystem.reset(tourId)
tutorialSystem.resetAll()
// Help
tutorialSystem.getHelp(topic)
tutorialSystem.getAllHelp()
// First visit detection
tutorialSystem.isFirstVisit()The tutorial system uses CSS custom properties for theming:
--accent: Primary accent color (buttons, progress)
--accent-bright: Lighter accent shade
--bg-card: Card background
--bg-secondary: Secondary background
--border: Border color
--text-primary: Primary text color
--text-secondary: Secondary text color
--text-muted: Muted text color- Keyboard Navigation: Full keyboard support
- ARIA Labels: Proper labeling for screen readers
- Focus Management: Appropriate focus states
- Color Contrast: WCAG AA compliant colors
- Screen Reader Announcements: Important actions announced
- Keep steps concise: 3-5 steps per tutorial is ideal
- Clear titles: Use action-oriented step titles
- Progressive difficulty: Start simple, build complexity
- Real examples: Use actual features, not mockups
- Provide context: Explain why, not just how
- Stable selectors: Use
data-tourattributes, not classes - Visible elements: Target elements that are always visible
- Interactive elements: Highlight buttons, inputs, links
- Proper spacing: Ensure tooltips have room to display
- Short and focused: 2-5 minutes per video
- High quality: Minimum 1080p resolution
- Captions: Include closed captions for accessibility
- Professional audio: Clear narration without background noise
- Consistent branding: Use dashboard theme colors
Potential additions to the tutorial system:
- Interactive quizzes after each tutorial
- Certificate generation for completed tutorials
- Multi-language support
- Tutorial playlists for learning paths
- User feedback and ratings
- Export progress reports
- Tutorial creation wizard for admins
- Integration with user profiles
- Gamification with points and levels
- Tutorial challenges and competitions
- Check that the target element has the correct
data-tourattribute - Verify the element is visible in the DOM
- Ensure no modal or overlay is blocking the element
- Check browser localStorage is enabled
- Verify no browser extensions are blocking storage
- Check for localStorage quota errors in console
- Verify video URL is correct and accessible
- Check network connectivity
- Ensure Vimeo is not blocked by firewall
- Reduce number of active animations
- Check for memory leaks with React DevTools
- Profile component renders with Performance tab
For questions or issues:
- Open an issue on GitHub
- Check existing documentation
- Review the code comments
- Contact the development team
This tutorial system is part of the Stellar Dev Dashboard project and is licensed under the MIT License.