Skip to content

Instantly share code, notes, and snippets.

View zomars's full-sized avatar
🙏
Never stop learning

Omar López zomars

🙏
Never stop learning
View GitHub Profile
@zomars
zomars / README.md
Created May 30, 2022 21:53
End to end API type safety with SWR and Next.js

Idea

Being able to auto type API endpoint according the use. This could be achieveable using TypeScript template literals.

Example:

Having these API endpoints:

  • /api/users
  • /api/companies
@zomars
zomars / README.md
Created May 30, 2022 21:52
End to end API type safety with SWR and Next.js

Idea

Being able to auto type API endpoint according the use. This could be achieveable using TypeScript template literals.

Example:

Having these API endpoints:

  • /api/users
  • /api/companies
@zomars
zomars / DangerousRawHtml.jsx
Created May 30, 2022 18:20
Inject raw html comments using React
export const DangerousRawHtml = ({ html = "" }) => (
<script dangerouslySetInnerHTML={{ __html: `</script>${html}<script>` }} />
);
@zomars
zomars / modularized-nextjs-project-strucutre.md
Last active May 28, 2024 18:19
Reusable Next.js project structure

File structure

The main file structure is organized as follows:

├── __test__
├── assets
├── configs
├── modules
│   ├── common (Here is what is reused in various modules)
@zomars
zomars / [slug].js
Created April 6, 2021 20:43 — forked from agungjk/[slug].js
Crawler example on Vercel using Puppeteer and NextJS API routes
const puppeteer = require('puppeteer-core');
const cheerio = require('cheerio');
const chrome = require('chrome-aws-lambda');
export default async (req, res) => {
const slug = req?.query?.slug;
if (!slug) {
res.statusCode = 200
res.setHeader('Content-Type', 'application/json')
res.end(JSON.stringify({ id: null }))
@zomars
zomars / Magic Link 1
Created October 19, 2020 22:23 — forked from cosmos-sajal/Magic Link 1
Magic Link 1
@zomars
zomars / useRtDbData.js
Last active July 30, 2020 19:09 — forked from dsafreno/withDbData.js
Hook version of dsafreno's withDbData for RealTime Database subscribing in React.
import { useEffect, useRef, useState } from 'react';
import firebase from 'firebase/app';
import equal from 'deep-equal';
function filterKeys(raw, allowed) {
if (!raw) {
return raw;
}
const s = new Set(allowed);
return Object.keys(raw)
@zomars
zomars / renderFieldsArray.js
Created August 29, 2018 21:17
Render redux-form Fields component
const renderFields = fields =>
Object.keys(fields).map((name, i) => {
if (!fields[name].input) return null;
return (
<Grid item xs={12}>
<Field
key={name}
name={name}
label={fields.labels[i]}
{...fields[name]}
<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<style>
.square,
.landscape { visibility: hidden; }
.portrait { visibility: visible; }
@media (min-aspect-ratio: 1/1) {
.portrait,
.landscape { visibility: hidden; }
.square { visibility: visible; }