"Improve as a basketball player by overcoming self-doubt and nervousness. Get advice from sports psychologists on how to build confidence and becoming a mentally strong baller."
Disclaimer: BallerMentality is a portfolio project that I'm building in public. It's not a real service. If you need help with sports psychology related services, please consult outher sources.
BallerMentality is a toy full stack project that I'm building with the hopes of learning how to do web development with Rust. In other words, it is not a real service.
The core service of BallerMentality is a web site where a user can:
- create an account
- select to have the role basketball player or sports psychologist
- interact with other members of the community
- book a session with a counterpart (player and psychologist)
- grade a session with stars based on how useful it was
The backend will be written in Rust using Poem and GraphQL, with OpenAPI integration. Persistence will be handled with a Dockerized Postgres database via SQLx. The frontent will be written in TypeScript using the Solid JS framework. Authentication will be provided via Google Auth.
The following scenario is written to get a sense of what functionlity that I'm hoping to provide in the the final version of the web application.
Adam Bearing is devastated. Last night's loss, in the division 1, first round game of the state champtionship tournament, has kept him awake all night. With three seconds remaining in the fourth quarter, Adam had the chance to win the game for his team, The Running Rebels - down by one against The City Sonics. Simple, just make one free throw to tie the game, make them both to win the game. Instead, he missed them both, and they lost the game. HE lost them the game.
Unable to sleep, Adam's picks up his phone and surfs the web. He spots an ad for BallerMentality "The hell is that?". The website is simple and the message is straight "Helping basketball players overcome anxiety and grow a baller mentality!"
Without hesitation, Adam creates an account using his Google gmail.
Once the account is created, he's presented with the following options:
Edithis profileCheckhis calendar and notificationsBooka new session (with a sports psychologist in the community)Cancelan previously booked sessionLogoutof the web page
Adam decides to edit his profile. He's presented with a form which he fills out,
describing himself and confidence/anxiety-related things that are bothering him
on the court.
He's also asked to grade himself on a number of strengths and weaknesses, what type
of player he his, and what type of player he wants to become.
Adamm clicks the calendar icon and he's presented with a monthly calendar. Waisting no time, Adam decides to book a session with a sports psychologist.
Clicking the Book Session button opens up a simpel form where Adam is asked to
provide some details on what type of session he would like, and write a few words
on the kind of challenge he's facing.
Adam writes that he's feeling depressed because he let his team down and that
he doesn't know who to talk to.
Adam selects a couple of dates and time slots that would be suitable for a session.
A few minutes later, Adam is notified by an icon in the top left corner, that two
sports psychologists have shown interest to book a session with him.
He looks at their profile and then confirms the invite from one of them.
The date and time of the session is added to his calendar.
Adam feels both relieved, having taken action to deal with his feelings, but also
a bit nervous about the booked session.
He logs out of the website, and realises that he's tired.
He goes to sleep, feeling much better.
The alarm clock rings...
"Shit! I gotta hurry, I got class in 20 minutes."
There will be a few more personas and use case scenarios in the [examples] directory. [examples]: https://github.com/cryptopatrick/ballermentality/tree/master/examples
- Initial prompt to create a rough outline of system and of parts to build:
🏗️
The Minimum Supported Rust Version (MSRV) of this crate is 1.85. As a tentative policy, the MSRV will not advance past the current Rust version provided by Debian Stable. At the time of writing, this version of Rust is 1.85. However, the MSRV may be advanced further in the event of a major ecosystem shift or a security vulnerability.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
