Hello! My name is Kei and I am a small Canadian artist.I started making merch in 2017 and have been enjoying it a lot. My current love is enamel pins and cats, which you will see a lot of here! You'll also see anime and game.I am also a digital painter and a pixel artist on the side.Thank you for supporting my small business!

I'm Kei and I like to make merch. I am also a digital painter and a pixel artist in my spare time.

let slider = new Vue({ el: "#app", data: { current: 0, // By default the slide at index 0 timer: null, // Timer null transitionName: "fade", // show: false, // Default hidden to use fade animation (fade-enter with view transitions) slides: [ { title: "I am Slide 1", image: "https://kokoteatest.carrd.co/assets/images/image02.jpg?v=12a13701", url: "https://images.unsplash.com/photo-1568051243858-533a607809a5?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80" }, { title: "I am Slide 2", image: "https://kokoteatest.carrd.co/assets/images/image02.jpg?v=12a13701", url: "https://images.unsplash.com/photo-1499636136210-6f4ee915583e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=800&q=80" }, { title: "I am Slide 3", image: "https://kokoteatest.carrd.co/assets/images/image02.jpg?v=12a13701", url: "https://images.unsplash.com/photo-1520903433380-0422514dee1c?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=668&q=80" } ] }, methods: { next() { this.transitionName = "slide-next"; // Name given to the transition for the next slide const len = this.slides.length; // Number of slides this.current = (this.current + (1 % len) + len) % len; // +1 for next slide: current index + (1 modulo the number of slides) + number of slides modulo number of slides. The modulo operation finds the remainder or signed remainder after a division of one number by another, e.g. the expression "5 mod 2" would evaluate to 1 because 5 divided by 2 has a quotient of 2 and a remainder of 1, while "9 mod 3" would evaluate to 0 because the division of 9 by 3 has a quotient of 3 and leaves a remainder of 0; there is nothing to subtract from 9 after multiplying 3 times 3. // e.g. for 3 slides when we are on slide 2 (remember that we are counting 0 1 2): (1 + 1% 3 + 3)% 3 = 1 // This technique allows us to make an infinite loop because on the last slide: (2 + 1% 3 + 3)% 3 = 0 }, prev() { this.transitionName = "slide-prev"; // Inverse of next :-) const len = this.slides.length; // Inverse of next :-) this.current = (this.current - (1 % len) + len) % len; // Inverse of next :-) }, startRotation() { this.timer = setInterval(this.next, 4000); // Rotation every 4 s }, stopRotation: function () { clearTimeout(this.timer); // Used to stop our setInterval this.timer; // timer is null } }, mounted() { this.show = true; // For condition show for fade-enter this.startRotation(); // Autoplay launch } });

Physical Locations

We have a shelf in a physical store! You can find us at the physical stores below:

Montreal - Artist Alley Shop
4357 Boulevard Saint-Laurent
Montreal, QC H2W 1Z8

Convention schedule

ConventionDateStatus
MTL Comic-ConJuly 4-7th, 2025Going
OtakuthonAugust 2025tba
Kupocon MontrealOctober 25th-26th, 2025tba

Come back to see updates on my con schedule!

Contact us

You can reach me on any of my social media to contact me! You can also send me a message in the form below.