As explained in my Websites portfolio entry, I wanted to bring together player, tournament and match-format info of my soccer team. I saw and use Upsnap frequently. It uses Svelte and Pocketbase. I discovered Svelte was a framework growing in popularity, and I chose to use it for this Team App. My goal is to learn more about:
- Webapp Design
- General Web app Frameworks
- Multilanguage
- Form Validation
- Data Structuring
- Javascript
Data #
It would have been easiest if i had access to the forementioned websites to gain user data, tournament info etc. Aless, they would not allow me access to it. Unless for loads of money of course. SFV gave me a legimitate answer, that they were working on their own improved app. Yet that would still twart me to get tournament data of the private websites like turnieragenda.ch. So I chose pyppeteer and python as the easiest way to login, and scrape my team’s specific tournament data.
Limitations #
The above recognition, led me to believe that this project would never rise to prominence and mass use. As it requires direct authentication info of each trainer that would want to use my app. So I considered this project as a personal Portfolio adventure. Nothing more.
- Scraped Data is limited to trainer specific authentication
- General Limitations of scraping
Pros #
The pros are clear to me. I practice data structure, API best practices, and would learn Svelte5
- I will use a modular component CSS framework like shadcn-svelte, so creating the UI would be a real treat.
- Learn Pocketbase for future small personal projects
- Practice the fastest python API library fastAPI
- Eventually, use Superforms for proper validation of forms (and learn how validation works)
Plan #
Authorization and Authentication #
- Invitation Links
- Users own Players or Teams
UI Plan #
- Player specific dashboard with easy Calendar overview of Tournaments in card format. Similar to other team Apps like heja.
- Event specific Modals for more details on an event like a tournament.
- Forms to add custom events, trainings or player specific data.
Scraping #
- Tournament and Player data is scraped from sfv.ch and turnieragenda.ch
- Pocketbase data structures are used for the eventual upload to pocketbase
- This process is automated and refreshed frequently (probably on daily bases and request by admin)
Pocketbase #
- Data is structured