Inspiration
As a skater at Texas A&M, I was always asking "Where should I skate today?" Some spots look good but have terrible surfaces. Others are great until security shows up. I wanted to build something to help Aggie skaters find the best spots on campus.
What it does
Aggie Skate Spots helps Texas A&M skaters find great places to skate:
- Rate Any Spot: Upload a photo and get an instant rating (1-10)
- Check the Weather: See real-time College Station weather and get skating recommendations
- Track Your Sessions: Time yourself, count tricks, and earn points
- Compete on the Leaderboard: Top 10 sessions with medals for 1st, 2nd, 3rd place
- Interactive Map: See all spots across campus
- Compare Spots: Pick between two locations side-by-side
How I built it
I used HTML, CSS, and JavaScript
Weather: I connected to a free weather API (Open-Meteo) that gives me real College Station conditions
// Fetch real weather data from College Station
async function fetchWeather() {
const url = 'https://api.open-meteo.com/v1/forecast?latitude=30.6280&longitude=-96.3344';
const response = await fetch(url);
const data = await response.json();
const temp = data.current.temperature_2m; // Get temperature
displayWeather(temp); // Show it on screen
}
Image Analysis: When you upload a photo, my code looks at the colors:
- Lots of gray = probably concrete = good score
- Lots of green = probably grass = bad score
- Bright image = well-lit = bonus points 💡
javascript // Simple scoring algorithm function calculateScore() { let score = 5.0; // Start at 5/10 if (grayPercent > 30) score += 2.5; // Concrete bonus if (greenPercent > 30) score -= 2.0; // Grass penalty if (avgBrightness > 150) score += 1.0; // Lighting bonus return score; }
Session Timer: Simple math for scoring:
- 1 point per minute skating
- 10 points per trick landed
- Multiply by spot difficulty
So if you skate 30 minutes, land 5 tricks, at an 8/10 spot: Score = (30 + 50) × 0.8 = 64 points
Challenges I faced
1. Making image analysis work At first, I only checked if the image was bright or dark. But shaded concrete would get bad scores! I had to add more checks for different colors.
2. Getting the timer to work My timer kept running even after I stopped it, eating up memory. I learned to properly clean up my code when stopping the timer.
3. Weather API was confusing The weather service gives you a "code" like 51 or 95, not "rainy" or "sunny". I had to create a translator to turn codes into weather conditions.
4. Keeping track of all the features With 7 different tabs (analyze, campus spots, saved spots, map, compare, timer, leaderboard), I had to organize my code carefully so everything worked together without breaking.
What I learned
- How to connect to APIs and get real data
- How to analyze images using code
- How to store data in the browser
- How to make timers and calculate scores
- How to make websites look good with CSS
- How to debug when things break (a lot!)
What's next
- Mobile optimization: Make it work better on phones and tablets
- Let users create accounts and save their favorite spots
- Add comments and ratings from other skaters
- Send notifications when the weather is perfect
- Make a mobile app version
- Add more campus spots with photos and details
Built With
- HTML5
- CSS3
- JavaScript
- Leaflet.js (for maps)
- Open-Meteo API (for weather)
Gig 'em!
Log in or sign up for Devpost to join the conversation.