Surface
Background
Main interface background
Light value
oklch(1 0 0)




Starting point
Learning Vue does not always mean knowing how to apply it. Someone can read documentation, follow tutorials, and copy examples, but still need a quick way to check whether they truly understand concepts like directives, routes, state, computed properties, or watchers.
Vue Training responds to that need with a direct practice experience: quizzes to assess concepts, challenges to apply logic, and short tips to reinforce good practices within the Vue ecosystem.
Audience
Carla is a digital designer with experience in visual tools, but recently she has felt the need to learn frontend development so she can collaborate better with engineers and prototype her own ideas.
She has tried video courses, but feels there is a large gap between "watching someone code" and doing it herself. She is looking for a way to practice technical Vue concepts in an isolated and safe environment before applying them in larger projects.
I understand how the interface should look, but I get frustrated when I do not know how to bring it to life with code without feeling like I might break something.
Audience
Lucas has spent years working on the server side. He is experienced in logic, databases, and security. However, in his personal projects or startup ideas, he often depends on someone else to build the interface.
He decided to learn Vue 3 because he heard that the Composition API feels more logical and closer to the functional programming style he already knows. He does not have time for 10-hour tutorials; he needs to break things and see the code in action.
I do not need someone to teach me how to program. I need to understand Vue syntax and how it handles state so I can build the frontend for my APIs quickly.
Core decision
The solution was to organize learning into simple and repeatable paths. The home page presents the main proposition, while the Quizzes, Challenges, and Random tip sections separate three different ways of practicing: checking knowledge, applying logic, and discovering focused recommendations.
The core decision was to treat learning as small understanding checks rather than a long sequence of lessons. That is why the interface relies on cards, category and difficulty filters, level badges, and direct calls to action.
Process
I divided the experience into quizzes for assessing concepts, challenges for applying logic, and random tips for reinforcing good practices.
In quizzes, content can be filtered by categories such as Pinia, Vue Router, or Vue, and by difficulty levels such as Basic or Intermediate.
Each quiz or challenge is presented as a card with a topic, level, title, and short description to help users quickly decide what to practice.
The interface includes light and dark modes, mobile navigation, and a language selector so practice does not depend on a single usage context.
Visual system
Font family
Poppins
Poppins was chosen as the main typeface because of its clean, modern, and accessible appearance. Its geometric structure helps build a clear interface, especially across cards, filters, navigation, and short reading content.
The scale prioritizes quick scanning: titles with strong visual weight, comfortable descriptive text, and functional labels that support user navigation.
Display
Poppins Bold · 40/48
Aprende a tu ritmo
Heading
Poppins SemiBold · 24/32
Cursos recomendados
Body
Poppins Regular · 16/24
Contenido claro para explorar módulos, niveles y actividades.
Caption
Poppins Medium · 12/16
Nivel intermedio · 8 lecciones
Visual system
The palette is organized with semantic tokens based on shadcn-vue. Each color has a role within the interface: surfaces, text, actions, states, structure, and interaction.
The system supports both light and dark mode through the same visual roles, keeping consistency across components, cards, forms, and navigation states.
Light mode
Surface
Main interface background
Light value
oklch(1 0 0)
Text
Main text
Light value
oklch(0.1511 0.0178 224.4773)
Surface
Cards and containers
Light value
oklch(0.9751 0.0055 183.0314)
Surface
Floating menus and layered elements
Light value
oklch(0.9807 0.0084 225.0796)
Action
Primary actions and brand elements
Light value
oklch(0.815 0.1706 151.2684)
Action
Secondary actions
Light value
oklch(0.0577 0.0313 296.8468)
Neutral
Soft backgrounds and secondary content
Light value
oklch(0.9396 0.0202 229.0448)
Accent
Active states, hover states, and soft highlights
Light value
oklch(0.9192 0.0162 187.3124)
Feedback
Errors and destructive actions
Light value
oklch(0.5502 0.22 25.0385)
Structure
Borders and dividers
Light value
oklch(0.9477 0.0085 225.084)
Structure
Form fields
Light value
oklch(0.8794 0.0196 230.727)
Interaction
Visible focus and interaction
Light value
oklch(0.6126 0.1866 252.6519)
Dark mode
Surface
Main interface background
Dark value
oklch(0.2077 0.0398 265.7549)
Text
Main text
Dark value
oklch(0.9205 0.0086 225.0879)
Surface
Cards and containers
Dark value
oklch(0.2513 0.0395 268.7473)
Surface
Floating menus and layered elements
Dark value
oklch(0.1802 0.0325 266.6248)
Action
Primary actions and brand elements
Dark value
oklch(0.815 0.1706 151.2684)
Action
Secondary actions
Dark value
oklch(0.9067 0 0)
Neutral
Soft backgrounds and secondary content
Dark value
oklch(0.1394 0.0106 220.3811)
Accent
Active states, hover states, and soft highlights
Dark value
oklch(0.2552 0.0415 267.5355)
Feedback
Errors and destructive actions
Dark value
oklch(0.5679 0.2323 28.2503)
Structure
Borders and dividers
Dark value
oklch(0.2824 0.0229 224.7083)
Structure
Form fields
Dark value
oklch(0.3338 0.0293 220.7787)
Interaction
Visible focus and interaction
Dark value
oklch(0.6126 0.1866 252.6519)
Interface
Initial view of the project.
View for starting a quiz.
View shown while quiz data is being loaded.
View of a quiz in progress.
Modal that provides a detailed explanation of the correct answer after answering a question.
View that shows the results after completing a quiz.
View that presents the description and requirements of a specific challenge.
Code editor view for solving a specific challenge.
View that displays a random Vue-related tip to reinforce good practices.
Final reflections
Vue Training was a learning and experimentation project that allowed me to explore the design of educational experiences for developers and the practical organization of technical content.
It also helped me better understand the Vue ecosystem through the research required to create quizzes and challenges, and through their later implementation in an interactive experience focused on practice.
Although the project is still in development, it has already given me valuable lessons about how to structure frontend framework learning and design interfaces that make direct practice easier.