Si no comprendes de que se trata este proyecto, te invito a ver el siguiente artículo:
Ya sé que quiero para el sitio, como se verá e incluso he pensado en como me gustaría que fuera el logo y la temática.
Falta elegir el color primario, secundario, las fuentes y varios puntos que deben ir en armonía con el logo; cosa que debo esperar ya que justo lo comisioné.
Mientras el diseño se termina de cocinar puedo avanzar en el núcleo del sitio: las entidades, como coexisten y funcionan en el sistema; a continuación lo que he avanzado parte de esta semana:
Entidades
Si veo los wireframes que realicé, puedo ver fácilmente las entidades del sistema:
-
Streamers - Los streamers registrados
- Live
- Position
-
Clips - Clips que vienen del API de Twitch
- Views
- Top
- URL
-
Ranking - Son estadísticas del API de Riot
- Rank
- KDA
- WR
-
Pickem - Acá el usuario común deberá iniciar sesión y seleccionar
- Account
- Selected Streamer
-
Viewers - Inicio de sesión, registro, verificación y estadísticas
- Position
- Is it your account?
- Recaptcha
Esto es como un pantallazo de las funcionalidades y que tendrá el sistema, gracias a esto logro determinar algunas de las tecnologías a utilizar:
- Postgresql: Necesito información ordenada y esto no es Big Data
- Prisma: Para administrar la base de datos y todo lo que conlleva la capa de persistencia
- NextJS: La prioridad esta sobre el frontend, necesito guardar y calcular estadísticas, además de que Next Auth es hermoso..
- Redis: Debo reducir la cantidad de consultas a la API de Riot.
- Chakra UI: Conocimiento y la rapidez con la que puedo armar un tema para el sitio con esta librería
- hCatpcha: Podría utilizar recaptcha, pero quiero ser un poco edgy
Relaciones
Ya sabiendo las entidades hice un pequeño análisis de como debería relacionarse las tablas, pero solo es una especie de boceto:
La parte de Auth es un conjunto de tablas predeterminadas para que trabaje Next Auth y pueda ayudarme a configurar el login de twitch rápidamente, por eso está apartado del resto.
Cada cuenta podrá votar una vez por un streamer, que es la funcionalidad de Pickem.
Cada streamer tendrá información de Riot y de Twitch, por esto debo enlazar ambas cuentas en mi sistema.
Habrá una forma de que los viewers igual puedan competir, por esto hay una relación entre Accounts y Riot Account.
Twitch Account y Riot Account los estoy viendo como repositorio para la información que proviene de las APIs.
Coloqué type en Accounts, porque será la tabla responsable del inicio de sesión, por esto debo validar la cuenta por si es de un streamer o de un viewer.
Reitero que es un boceto, pero es una idea aproximada de cómo se comportará el sistema.
Más adelante...
- Me gustaría registrar la información de cada día transcurrido en la competencia
- Darle más sentido a la tabla de Clips, incluir la persona que realizo el clip para un posible premio. Pero todo dependerá de la API de Twitch.