Skip to content

Pitscheider/EpicER

Repository files navigation

🍽️ EpicER

EpicER is a full-stack Kotlin web application designed to manage and share recipes in a structured, scalable, and user-friendly way. The platform allows users to create, view, and organize recipes—each enriched with ingredients, steps, sections, and images. It is built entirely with Kotlin using modern technologies like Ktor, Exposed, and KVision, with a strong emphasis on type safety, modularity, and maintainability.


✨ Features

  • 🔐 Authentication & Authorization
    • JWT-based login system
    • Role-based access (admin, maintainer, user)
  • 🧑‍🍳 Recipe Management
    • Create and edit recipes with portions, sections, and steps
    • Add ingredients to both the recipe and individual steps
    • Upload and associate images to recipes and steps
  • 🧾 Ingredients and Units System
    • Reusable ingredients and measurement units
    • Unit conversion support with reference units
  • 🧠 Reactive Frontend
    • Built with KVision for a reactive, component-based UI
    • Supports live updates without reloading the page
  • 🌐 RESTful API Backend
    • Built with Ktor and Exposed (SQL DSL)
    • Secure, robust, and modular architecture
  • 📦 Shared DTOs
    • Data consistency between frontend and backend using shared Kotlin Multiplatform DTOs

⚙️ Technologies Used

Layer Technology
Frontend KVision
Backend Ktor + Exposed
Database MariaDB
Auth JWT (via Ktor plugin)
Language Kotlin (Multiplatform support for shared code)

🚀 Getting Started

Note: These instructions assume you are using IntelliJ IDEA and have MariaDB running.

Backend

cd backend
./gradlew run

Frontend

cd frontend
./gradlew kobwebRun

Database

  • The application uses MariaDB.
  • Database tables are created automatically in Ktor.
  • A default admin user is auto-generated if none is present.

📁 Project Structure

EpicER/
│
├── backend/              → Ktor + Exposed + Authentication
├── frontend/             → KVision components, forms, views
├── common/               → Shared DTOs across backend/frontend

📸 Screenshots

all_recipes_page

ingredients_in_recipe_page

steps_in_recipe_page

ingredients_page

units_page

edit_ingredients_in_recipe_page


🤔 Why Kotlin Everywhere?

Using Kotlin across frontend and backend:

  • Ensures type safety
  • Minimizes bugs thanks to shared data models
  • Improves productivity with a unified tech stack

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages