Inspiration
TeamUp was inspired by a simple problem I have seen often: people want to play sports, but they do not always have enough players available at the same time and place. This happens in colleges, offices, residential communities, and local groups where someone may want to play cricket, football, badminton, or pickleball, but organizing players manually through chats can become messy. I wanted to build something that makes this process easier: a platform where people can create a match, find players, request to join, and coordinate quickly.
What it does
TeamUp is a sports matchmaking app that helps users find and join local sports matches. Users can create a match by entering details like sport, location, date, time, and the number of players needed. Other users can view available matches and send a request to join. The match creator can approve join requests, and the user receives a notification once their request is approved. The main workflow is: Create a match → Discover matches → Request to join → Approve request → Receive notification This makes TeamUp useful for people who want to play sports but do not always have a fixed group ready.
How we built it
TeamUp was built using Next.js for the frontend and backend API routes. The frontend includes pages for onboarding, match discovery, creating matches, join requests, and notifications. For the database, we used Amazon DynamoDB. DynamoDB was chosen because TeamUp depends on fast and predictable access patterns such as loading available matches, creating join requests, approving requests, and showing notifications. The data model was designed around the main product workflows. We created separate DynamoDB tables for users, matches, join requests, and notifications. This helped keep the backend structure clear and aligned with how users actually interact with the app. The app was deployed using Vercel, with API routes connecting the frontend to DynamoDB.
Challenges we ran into
One challenge was designing the data flow so that the app felt like a real product and not just a static UI. The create match, join request, approval, and notification flows all had to work together properly. Another challenge was thinking through the DynamoDB structure. Since DynamoDB works best when the access patterns are clear, we had to design tables around the actions the app needed most, instead of treating the database like a traditional relational database. We also worked on improving the mobile frontend so that the app looked usable on both laptop and phone screens. Making the interface clean, simple, and connected to real backend actions took several iterations.
Accomplishments that we're proud of
We are proud that TeamUp has a complete working flow from match creation to approval and notification. A user can create a sports match, another user can request to join, the host can approve the request, and the notification system updates accordingly. We are also proud of building a full-stack project where the frontend, backend APIs, and DynamoDB database are connected meaningfully. The database was not added just to check a box; it supports the core workflows of the app. Another accomplishment is that TeamUp feels like something that could be expanded into a real local sports coordination platform for colleges, offices, clubs, and communities.
What we learned
Through TeamUp, we learned how important it is to design the database around real user actions. DynamoDB works well when the access patterns are known, so we had to think carefully about what data needed to be read and written during match discovery, join requests, approvals, and notifications. We also learned more about building full-stack applications with Next.js API routes and connecting them to AWS services. This project helped us understand how frontend decisions, backend routes, and database design affect the overall user experience. Most importantly, we learned that a good hackathon project is not only about building features. It is also about explaining the problem clearly, showing the workflow, and making the technical choices feel intentional.
What's next for TeamUp
Next, TeamUp could be improved with stronger authentication, better user profiles, and location-based filtering so users can find matches near them more easily. We would also like to add recurring games, team creation, player ratings, and recommendations based on sport, location, and availability. Another useful feature would be real-time updates for join requests and notifications. In the future, TeamUp could become a practical platform for colleges, offices, residential communities, and local sports groups where people want an easier way to organize games and find teammates.
Built With
- amazon-dynamodb
- github
- nextjs
- node.js
- react
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.