Project Info
This project did not submit a demo video on Devpost.
Inspiration
Shrek is love, Shrek is life. Inspired by the Magic Mirror in the Dreamworks classic, we crafted this smart mirror from scratch, powered by a Raspberry Pi via a monitor looking through a 1-way glass.
What it does
Our intention for this project was to build something beautiful and modern to display in our home. This mirror provides an elegant interface to view your favorite widgets (weather, stocks, calendar, etc). The Raspberry Pi features a microphone and camera module for hands-free interaction. If you ever wanted to feel what Lord Farquaad felt like in Shrek, this is the next best solution!
How we built it
We started with a 3-D blueprint of the wooden computer frame and housing. This provided the dimensions needed to rip the lumber lengthwise with a table saw and cut the wood widthwise with a circular saw. From there, we used the Kreg Pocket Hole Jig to drill angled corner holes to join the wood pieces into a rectangle. Finally, we fastened the picture frame and supporting rectangle frame together. In the middle layer, we replaced the stock transparent glass with a 1-way mirror that lets you see your reflection but also light from the monitor behind it. For the monitor, we stripped all the plastic pieces to leave only the screen and sandwiched everything together. Finally, we designed the mirror's interface with the open-source library MagicMirror. The documentation provided many modular 3rd party widgets that are plug-and-play for the mirror's interface.
Challenges we ran into
The primary challenges we encountered were during the initial phases of woodworking and during the final stages of using the Alexa module. We underestimated the width of the supporting wood required to not have the wood screws crack the wood. Our initial prototype had a width of 1.5", and the wood screws split the lumber right at the corner. Widening the beams to 2" solved this problem. Our second main challenge nearing the completion of the project is the integration of the Alexa Assistant and its corresponding MagicMirror module. The debugging process for physical hardware items presents a new dimension of things that can go wrong. In addition, some terminal commands were outdated and bottlenecked us from proceeding.
Accomplishments we're proud of
This was our first Raspberry Pi and woodworking project! As Computer Science majors, this was our first opportunity to work with hardware and integrate the full-stack experience of the user interface, accessing backend APIs, and housing the technology in a presentable package. For a two-person team, we've successfully built an integrated and modern piece of fine furniture in 48 hours.
What we learned
We learned how to craft lumber and code all in a new platform of the Raspberry Pi. This was a phenomenal hands-on project!
What's next
We have a Raspberry Pi Camera module attached and on standby! We're looking forward to precisely drilling the camera port and using OpenCV to allow users to interact with the mirror through gestures and voice.

MagicMirror² is an open source modular smart mirror platform. With a growing list of installable modules, the MagicMirror² allows you to convert your hallway or bathroom mirror into your personal assistant. MagicMirror² is built by the creator of the original MagicMirror with the incredible help of a growing community of contributors.
MagicMirror² focuses on a modular plugin system and uses Electron as an application wrapper. So no more web server or browser installs necessary!
Documentation
For the full documentation including installation instructions, please visit our dedicated documentation website: https://docs.magicmirror.builders.
Links
- Website: https://magicmirror.builders
- Documentation: https://docs.magicmirror.builders
- Forum: https://forum.magicmirror.builders
- Technical discussions: https://forum.magicmirror.builders/category/11/core-system
- Discord: https://discord.gg/J5BAtvx
- Blog: https://michaelteeuw.nl/tagged/magicmirror
- Donations: https://magicmirror.builders/#donate
Contributing Guidelines
Contributions of all kinds are welcome, not only in the form of code but also with regards to
- bug reports
- documentation
- translations
For the full contribution guidelines, check out: https://docs.magicmirror.builders/about/contributing.html
Enjoying MagicMirror? Consider a donation!
MagicMirror² is Open Source and free. That doesn't mean we don't need any money.
Please consider a donation to help us cover the ongoing costs like webservers and email services. If we receive enough donations we might even be able to free up some working hours and spend some extra time improving the MagicMirror² core.
To donate, please follow this link.
Analysis
View
Metric
- 9
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- HTMLIn code
- JavaScriptIn code
- TypeScriptIn code
5 of 5 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
734 KB
Source files
212
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
TriMPham98/MagicMirror
329 files · 1.4 MB · @ af6eb98
Structure
Interface
12 files · 4%Screens, components and styles rendered to the user.
Application logic
116 files · 35%Domain rules, services and shared utilities.
+1 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript73%
- Markdown14%
- CSS7%
- XML5%
- YAML1%
- HTML0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 38- ajv
- ansis
- console-stamp
- envsub
- eslint
- express
- express-ipfilter
- feedme
- groq-sdk
- helmet
- html-to-text
- iconv-lite
- module-alias
- moment
- node-ical
- node-record-lpcm16
- pm2
- socket.io
- +20 more
fonts/package.json
npm · 2- @fontsource/roboto
- @fontsource/roboto-condensed
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
Built with MagicMirror open-source platformVerified
Designed the mirror's interface with the open-source library MagicMirror
Claimed on Devposthigh confidenceREADME.md:1— README is the stock MagicMirror2 README, and repo structure (modules/, js/electron.js, config/) matches the MagicMirror2 platformjs/electron.js— Electron application wrapper file present, matching MagicMirror2 architecture
Electron application wrapper (no browser/webserver install needed)Verified
MagicMirror2 uses Electron as an application wrapper so no web server or browser installs are necessary
Claimed on readmehigh confidencejs/electron.js— Electron wrapper implementation exists; config.js also defines electronOptions (webPreferences, powerSaveBlocker)config/config.js:14— electronOptions block configures the Electron webPreferences used by js/electron.js
Modular plugin system for third-party modulesVerified
MagicMirror2 focuses on a modular plugin system with a growing list of installable modules
Claimed on readmehigh confidencemodules/default/defaultmodules.js— default module loader registers pluggable modulesconfig/config.js:22— config.js modules array demonstrates the plugin config pattern, including third-party module names (MMM-Jast, MMM-IronManGIF) not vendored in this repo
Widget dashboard interface (weather, calendar, compliments)Verified
Elegant interface to view widgets (weather, stocks, calendar, etc.) on the mirror
Claimed on Devposthigh confidenceconfig/config.js:82— weather module configured (current + forecast, openmeteo provider)config/config.js:34— calendar module configured with a US Holidays ICS feedmodules/default/weather— built-in weather module implementation present in default modulesmodules/default/calendar— built-in calendar module implementation present in default modules
Alexa Assistant integration via MagicMirror moduleClaimed only
Integration of the Alexa Assistant and its corresponding MagicMirror module
Claimed on Devposthigh confidenceFuture OpenCV gesture/voice interactionClaimed only
Planned use of OpenCV with the Raspberry Pi Camera module to allow gesture and voice interaction (stated as future work)
Claimed on Devposthigh confidenceRaspberry Pi camera module for hands-free interactionClaimed only
The Raspberry Pi features a camera module for hands-free interaction
Claimed on Devposthigh confidenceRaspberry Pi microphone for hands-free voice interactionClaimed only
The Raspberry Pi features a microphone for hands-free interaction
Claimed on Devposthigh confidenceStock/crypto tracker widgetClaimed only
Display stocks widget on the mirror
Claimed on Devposthigh confidencePhysical smart mirror hardware build (wood frame, 1-way glass, monitor)Blocked
Crafted a smart mirror from scratch, powered by a Raspberry Pi via a monitor looking through a 1-way glass, with a wooden housing built via woodworking
Claimed on Devposthigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.