Skip to content

Instantly share code, notes, and snippets.

@KrisKnez
KrisKnez / compose.yml
Created May 5, 2025 12:38
Traefik + Portainer + Virtualmin
services:
traefik:
container_name: traefik
image: "traefik:latest"
restart: always
extra_hosts:
- "host.docker.internal:host-gateway"
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
@KrisKnez
KrisKnez / Dockerfile
Created February 13, 2025 13:38
PHP 7.4 DEV ENV
FROM php:7.4-apache AS final
# Install system dependencies required for PHP extensions
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libonig-dev \
libzip-dev \
zip \
@KrisKnez
KrisKnez / Dockerfile
Last active February 13, 2025 13:38
PHP 5.6 DEV ENV
FROM php:5.6-apache AS final
# Use archived Debian repositories for old versions (apt-get update won't work otherwise)
RUN sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list && \
sed -i 's|http://security.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list && \
# Remove or comment out the stretch-updates repository
sed -i '/stretch-updates/d' /etc/apt/sources.list && \
echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/99no-check-valid-until
# Install system dependencies required for PHP extensions
@KrisKnez
KrisKnez / nest.js vercel serverless function
Created June 2, 2024 11:10
Deploy NEST.JS to Vercel Serverless Functions
// vercel.json
{
"version": 2,
"builds": [
{
"src": "package.json",
"use": "@vercel/static-build",
"config": {
"distDir": "public"
@KrisKnez
KrisKnez / IPrismaStringFilter.ts
Created March 27, 2024 23:35
IPrismaStringFilter.ts
import { Prisma } from '@prisma/client';
type IPrismaStringFilter<
Prefix extends string,
Delimiter extends string = '_',
Operations extends keyof Prisma.StringFilter = keyof Prisma.StringFilter,
> = {
[K in `${Prefix}${Delimiter}${keyof Pick<
Prisma.StringFilter,
Extract<'equals' | 'contains' | 'startsWith' | 'endsWith', Operations>
@KrisKnez
KrisKnez / IPrismaIntFilter.ts
Created March 27, 2024 23:34
IPrismaIntFilter.ts
import { Prisma } from '@prisma/client';
type IPrismaIntFilter<
Prefix extends string,
Delimiter extends string = '_',
Operations extends keyof Prisma.IntFilter = keyof Prisma.IntFilter,
> = {
[K in `${Prefix}${Delimiter}${keyof Pick<
Prisma.IntFilter,
Extract<'equals' | 'gt' | 'gte' | 'lt' | 'lte' | 'not', Operations>
@KrisKnez
KrisKnez / IPrismaDateTimeFilter.ts
Last active March 27, 2024 23:34
IPrismaDateTimeFilter.ts
import { Prisma } from '@prisma/client';
type IPrismaDateTimeFilter<
Prefix extends string,
Delimiter extends string = '_',
Operations extends keyof Prisma.DateTimeFilter = keyof Prisma.DateTimeFilter,
> = {
[K in `${Prefix}${Delimiter}${keyof Pick<
Prisma.IntFilter,
Extract<'equals' | 'gt' | 'gte' | 'lt' | 'lte' | 'not', Operations>
@KrisKnez
KrisKnez / order-by-note.dto.ts
Created February 24, 2024 18:49
Order By Dto For Notes
import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsOptional } from 'class-validator';
import { Prisma } from '@prisma/client';
const orderByKeys = [
'id',
'title',
'content',
'createdAt',
@KrisKnez
KrisKnez / env.ts
Created July 29, 2023 01:45
Next.JS env with envalid
import { cleanEnv, url } from "envalid";
// We have to do this because of how Next.JS handles process.env
const processEnv = {
NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL,
};
const env = cleanEnv(processEnv, {
NEXT_PUBLIC_API_URL: url(),
});
@KrisKnez
KrisKnez / gist:af2233d1d6064ff07ab698a969fd9195
Created June 15, 2023 20:38
React Typescript Hight Order Component (HOC) inherit Compound Components
If you have a React component with compount components e.g. List, List.Item using HOC will remove compound components.
For the HOC to inherit compound components you need to do it manually.
Use a library like: https://www.npmjs.com/package/hoist-non-react-statics