4 次代碼提交 b55f80bdd1 ... c4b59c5d00

作者 SHA1 備註 提交日期
  kuspoes c4b59c5d00 Merge branch 'master' of https://notabug.org/kuspoes/bm 2 年之前
  kuspoes 6364e2ad4e Merge branch 'master' of https://notabug.org/kuspoes/bm 3 年之前
  kuspoes 3391ee1053 Merge branch 'master' of https://notabug.org/kuspoes/bm 3 年之前
  kuspoes 50ca60b9fb entahlah lupawq 3 年之前
共有 4 個文件被更改,包括 1074 次插入1362 次删除
  1. 981 0
      assets/dl/ekspor-kus.json
  2. 89 0
      package-lock.json
  3. 4 0
      routes/index.js
  4. 0 1362
      yarn.lock

+ 981 - 0
assets/dl/ekspor-kus.json

@@ -0,0 +1,981 @@
+{
+  url: 'http://courses.ics.hawaii.edu/ics314f19/morea/deployment/reading-atlas-robo3t.html',
+  judul: 'Robo3T koneksi ke Atlas',
+  uraian: 'Cara menghubungkan dan membuka database mongodb Atlas dengan mempergunakan Robo3T',
+  tags: [ 'mongodb', 'penting' ]
+},{
+  url: 'https://thevaluable.dev/vim-expert/',
+  judul: 'Vim Expert',
+  uraian: 'Tutorial untuk menjadi expert dalam mempergunakan VIM',
+  tags: [ 'vim' ]
+},{
+  url: 'https://github.com/sparkartgroup/handlebars-helper',
+  judul: 'Handlebars Helpers',
+  uraian: 'Katalog Helpers untuk handlebars',
+  tags: [ 'nodejs', 'dev' ]
+},{
+  url: 'https://github.com/marceloprates/prettymaps',
+  judul: 'Pretty Maps',
+  uraian: 'A small set of Python functions to draw pretty maps from OpenStreetMap data. Based on osmnx, matplotlib and shapely libraries. ',
+  tags: [ 'python' ]
+},{
+  url: 'https://tutorial.eyehunts.com/js/javascript-split-string-based-delimiter-comma-space/',
+  judul: 'Javascript: Split String',
+  uraian: 'Cara memisahkan data dengan javascript. Di Fastify operasi ini langsung menghasilkan array json',
+  tags: [ 'nodejs', 'javascript', 'tips' ]
+},{
+  url: 'https://learn-regex.com/',
+  judul: 'Belajar REGEX',
+  uraian: 'Belajar Regex secara interaktif. Mudah ternyata.',
+  tags: [ 'javascript' ]
+},{
+  url: 'https://css-tricks.com/a-complete-guide-to-dark-mode-on-the-web/',
+  judul: 'A Complete Guide to Dark Mode on the Web | CSS-Tricks',
+  uraian: '',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://web.dev/css-marker-pseudo-element/',
+  judul: 'Custom bullets with CSS ::marker',
+  uraian: '',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://css-tricks.com/snippets/css/a-guide-to-flexbox/',
+  judul: 'A Complete Guide to Flexbox ',
+  uraian: 'Our comprehensive guide to CSS flexbox layout. This complete guide explains everything about flexbox, focusing on all the different possible properties for the parent element (the flex container) and the child elements (the flex items). It also includes history, demos, patterns, and a browser support chart.',
+  tags: [ 'design', 'flexbox', 'css' ]
+},{
+  url: 'https://www.fastify.io/',
+  judul: 'Fastify',
+  uraian: 'Fast and low overhead web framework, for Node.js',
+  tags: [ 'nodejs', 'fastify' ]
+},{
+  url: 'https://handlebarsjs.com/',
+  judul: 'Handlebars',
+  uraian: 'Minimal templating on steroids. ',
+  tags: [ 'javascript' ]
+},{
+  url: 'https://unix4lyfe.org/darkhttpd/',
+  judul: 'darkhttpd',
+  uraian: 'When you need a web server in a hurry. ',
+  tags: [ 'server', 'linux' ]
+},{
+  url: 'http://suckless.org/rocks/',
+  judul: 'software that sucks less | suckless.org software that sucks less',
+  uraian: 'Software on this page should have ideas similar to the suckless philosophy. The software must be FOSS licensed.',
+  tags: [ 'linux' ]
+},{
+  url: 'https://vim.reversed.top/',
+  judul: 'Big Pile of Vim-like',
+  uraian: '',
+  tags: [ 'vim' ]
+},{
+  url: 'https://sketchviz.com/graphviz-examples',
+  judul: 'Graphviz Examples and Tutorial',
+  uraian: 'Graphviz Examples',
+  tags: [ 'graph', 'aplikasi' ]
+},{
+  url: 'https://trumpexcel.com/creating-excel-dashboard/',
+  judul: 'Creating Excel Dashboard',
+  uraian: 'Creating An Excel Dashboard (Explained with Examples & Templates)',
+  tags: [ 'excel' ]
+},{
+  url: 'https://stackoverflow.com/questions/64747813/convert-multiple-array-into-one-array-in-mongodb-also-remove-the-none-values-fr',
+  judul: 'Convert multiple array into one array in MongoDB, also remove the None values from Arrays',
+  uraian: 'Menggabungkan multiple array hasil menjadi single array',
+  tags: [ 'mongodb' ]
+},{
+  url: 'https://gabrieleromanato.name/nodejs-create-a-site-search-engine-with-mongodb',
+  judul: 'Create a site search engine with MongoDB',
+  uraian: 'Membuat index di mongodb dan kemudian memanfaatkannya untuk menjadi fungsi pencarian full text',
+  tags: [ 'nodejs', 'mongodb' ]
+},{
+  url: 'https://eta.js.org',
+  judul: 'Eta',
+  uraian: 'Lightweight, powerful, pluggable embedded JS template engine.',
+  tags: [ 'eta', 'nodejs' ]
+},{
+  url: 'https://www.cssscript.com/box-shadow-sticky-nav/',
+  judul: 'Box shadow untuk sticky nav',
+  uraian: 'A pure CSS implementation of the drop-shadow effect, which appears below a header navigation bar when we start to scroll the page.',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://docs.mongodb.com/drivers/node/current/',
+  judul: 'MongoDB Docs untuk NodeJS',
+  uraian: 'MongoDB Docs untuk NodeJS, biar ga lama nyarinya.',
+  tags: [ 'nodejs', 'mongodb' ]
+},{
+  url: 'https://brumm.af/shadows',
+  judul: 'Make a smooth shadow, friend',
+  uraian: 'Inspired by https://tobiasahlin.com/blog/layered-smooth-box-shadows\n',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://marcusnoble.co.uk/2021-09-01-migrating-from-docker-to-podman/',
+  judul: 'Migrating from Docker to Podman',
+  uraian: 'Cara berpindah dari Docker ke Podman.',
+  tags: [ 'podman', 'docker' ]
+},{
+  url: 'https://www.bezkoder.com/node-js-mongodb-pagination/',
+  judul: 'Bezkoder: MongoDB pagination',
+  uraian: 'Pagination mongodb dengan mempergunakan plugin mongoose-paginate',
+  tags: [ 'mongodb', 'nodejs' ]
+},{
+  url: 'https://deno.land/',
+  judul: 'Deno',
+  uraian: 'A modern runtime for JavaScript and TypeScript.',
+  tags: [ 'javascript', 'deno' ]
+},{
+  url: 'https://sw.kovidgoyal.net/kitty/',
+  judul: 'kitty - the fast, featureful, GPU based terminal emulator — kitty 0.18.2 documentation',
+  uraian: '',
+  tags: [ 'linux' ]
+},{
+  url: 'https://magpi.raspberrypi.org/articles/build-a-raspberry-pi-nas',
+  judul: 'Build a Raspberry Pi NAS — The MagPi magazine',
+  uraian: '',
+  tags: [ 'linux', 'raspberrypi' ]
+},{
+  url: 'https://github.com/FiloSottile/age',
+  judul: 'GitHub - FiloSottile/age: A simple, modern and secure encryption tool with small explicit keys, no config options, and UNIX-style composability.',
+  uraian: '',
+  tags: [ 'encrypt', 'linux' ]
+},{
+  url: 'https://observablehq.com/@d3/bar-chart-race-explained',
+  judul: 'Bar Chart Race, Explained / D3 / Observable',
+  uraian: '',
+  tags: [ 'javascript', 'chart', 'bar' ]
+},{
+  url: 'https://podman.io/',
+  judul: 'Podman',
+  uraian: 'Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. Containers can either be run as root or in rootless mode. Simply put: alias docker=podman.',
+  tags: [ 'linux', 'podman', 'docker' ]
+},{
+  url: 'https://attacomsian.com/blog/javascript-remove-duplicates-from-array',
+  judul: 'Javascript: Remove Duplicates from Array',
+  uraian: 'Jacascript cara untuk mengahapus/menyembunyikan string ganda di dalam array.',
+  tags: [ 'javascript' ]
+},{
+  url: 'https://softwareontheroad.com/pagination-in-nodejs-mongo/',
+  judul: 'Easy full-stack pagination',
+  uraian: 'Pagina dengan nodejs dan mongodb serta React.',
+  tags: [ 'javascript', 'nodejs', 'mongodb', 'react' ]
+},{
+  url: 'https://github.com/awesome-selfhosted/awesome-selfhosted',
+  judul: 'Awesome self hosted',
+  uraian: 'A list of Free Software network services and web applications which can be hosted on your own servers ',
+  tags: [ 'awesome' ]
+},{
+  url: 'https://lumeland.github.io/',
+  judul: 'Lume',
+  uraian: 'A Static Site Generator for Deno',
+  tags: [ 'deno', 'lume', 'ssg' ]
+},{
+  url: 'https://httpie.io/',
+  judul: 'HTTPie',
+  uraian: 'HTTPie : is a user-friendly command-line HTTP client for the API era. It comes with JSON support, syntax highlighting, persistent sessions, wget-like downloads, plugins, and more.',
+  tags: [ 'aplikasi', 'rest', 'httpie' ]
+},{
+  url: 'https://medium.com/@musliadi/apa-perbedaan-req-body-req-params-req-query-pada-nodejs-eb3450914447',
+  judul: 'Perbedaan jenis request',
+  uraian: 'apa itu request params, body, atau query',
+  tags: [ 'nodejs' ]
+},{
+  url: 'https://www.aymerick.com/2014/12/22/backup-synology-on-raspberrypi.html',
+  judul: 'Backup a Synology NAS to a raspberry pi',
+  uraian: 'Cara membuat backup NAS di Raspberry Pi',
+  tags: [ 'linux', 'raspberrypi' ]
+},{
+  url: 'https://github.com/axa-group/Parsr',
+  judul: 'GitHub - axa-group/Parsr: Transforms PDF, Documents and Images into Enriched Structured Data',
+  uraian: '',
+  tags: [ 'aplikasi', 'pdf' ]
+},{
+  url: 'https://devandgear.com/posts/18-free-hosting-providers-for-your-static-website-in-2020/',
+  judul: '18 Free Hosting Providers for Your Static Website in 2020 · Dev & Gear',
+  uraian: '',
+  tags: [ 'gratis', 'hosting' ]
+},{
+  url: 'https://www.howtogeek.com/222262/how-to-reset-your-forgotten-password-in-windows-10/',
+  judul: 'How to Reset Your Forgotten Password in Windows 10',
+  uraian: '',
+  tags: [ 'windows10' ]
+},{
+  url: 'https://cri.dev/posts/2020-09-12-Raspberry-Pi-as-a-local-server-for-self-hosting-applications/',
+  judul: 'Raspberry Pi as a local server for self hosting applications - News from Chris',
+  tags: [ 'raspberrypi', 'linux' ]
+},{
+  url: 'https://pomcor.com/2018/06/25/login-session-maintenance-in-node-js-using-express-and-handlebars/',
+  judul: 'Login Session di Nodejs',
+  uraian: 'Login Session Maintenance in Node.js using Express and Handlebars. Sebagai inspirasi.',
+  tags: [ 'nodejs', 'handlebars' ]
+},{
+  url: 'https://notabug.org/',
+  judul: 'Notabug',
+  uraian: 'GIT hosting gratis, mantap.',
+  tags: [ 'gratis', 'hosting', 'notabug', 'git' ]
+},{
+  url: 'https://www.ventoy.net/en/index.html',
+  judul: 'Ventoy',
+  uraian: 'Ventoy is an open source tool to create bootable USB drive for ISO/WIM/IMG/VHD(x)/EFI files.',
+  tags: [ 'linux', 'bootable', 'aplikasi' ]
+},{
+  url: 'https://github.com/craigbuckler/progressive-image.js',
+  judul: 'GitHub - craigbuckler/progressive-image.js: A lazy-loading progressive image similar to those seen on Facebook and Medium.',
+  uraian: '',
+  tags: [ 'design' ]
+},{
+  url: 'https://github.com/iggredible/Learn-Vim',
+  judul: 'GitHub - iggredible/Learn-Vim: A book for learning the Vim editor',
+  uraian: '',
+  tags: [ 'vim' ]
+},{
+  url: 'https://medium.com/tenable-techblog/bypass-windows-10-user-group-policy-and-more-with-this-one-weird-trick-552d4bc5cc1b',
+  judul: 'Bypass Windows 10 User Group Policy (and more) with this One Weird Trick',
+  uraian: '',
+  tags: [ 'windows10' ]
+},{
+  url: 'https://beeware.org/',
+  judul: 'Write once. Deploy everywhere.— BeeWare',
+  uraian: 'Electronnya Python, sekali koding bisa jalan di PC/Windows/Linux, Mac, Web, Android, dan iOS',
+  tags: [ 'python' ]
+},{
+  url: 'https://www.youtube.com/watch?v=ZX3qt0UWifc',
+  judul: 'Create A Paginated API With Node.js - Complete Tutorial',
+  uraian: 'Nodejs Pagina API. Video youtube',
+  tags: [ 'nodejs', 'youtube' ]
+},{
+  url: 'https://tiny-helpers.dev/',
+  judul: 'All – Tiny Helpers',
+  uraian: 'A collection of free single-purpose online tools for web developers...',
+  tags: [ 'lain' ]
+},{
+  url: 'https://www.pollen.style/',
+  judul: 'Pollen',
+  uraian: 'Pollen is a library of CSS variables for rapid prototyping, consistent styling, and as a zero-runtime utility-first foundation for your own design systems. Heavily inspired by TailwindCSS.',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://www.sqlitetutorial.net/',
+  judul: 'SQLite Tutorial',
+  uraian: 'Tutorial untuk belajar SQLite',
+  tags: [ 'sqlite' ]
+},{
+  url: 'https://bookmarkos.com/every-bookmark-manager-ever-made/',
+  judul: 'Every bookmark manager ever made | A Bootstrapped Journey',
+  uraian: '',
+  tags: [ 'bookmark', 'aplikasi' ]
+},{
+  url: 'https://www.smashingmagazine.com/2019/04/nodejs-express-api-markdown-html/',
+  judul: 'Building A Node.js Express API To Convert Markdown To HTML',
+  uraian: ' Learn how to use Node.js and the Express framework in order to create an API endpoint — in the context of building an application that converts Markdown syntax to HTML. ',
+  tags: [ 'nodejs', 'markdown' ]
+},{
+  url: 'https://github.com/sissbruecker/linkding',
+  judul: 'GitHub - sissbruecker/linkding: Self-hosted bookmark service',
+  uraian: 'Bookmarks service mirip banget sama Pinboard',
+  tags: [ 'bookmark', 'aplikasi' ]
+},{
+  url: 'https://dystroy.org/broot/',
+  judul: 'Broot',
+  uraian: 'Get an overview of a directory, even a big one',
+  tags: [ 'linux' ]
+},{
+  url: 'https://miniflux.app/',
+  judul: 'miniflux',
+  uraian: 'Miniflux is a minimalist and opinionated feed reader.\r\n',
+  tags: [ 'awesome' ]
+},{
+  url: 'https://teenyicons.com/',
+  judul: 'Teenyicons — Tiny minimal 1px icons',
+  uraian: '',
+  tags: [ 'svg', 'design', 'icon' ]
+},{
+  url: 'http://hiphoff.com/creating-hover-over-footnotes-with-bootstrap/',
+  judul: 'Creating Hover-Over Footnotes With Bootstrap - HipHoff',
+  uraian: '',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://github.com/mgdm/htmlq',
+  judul: 'Like Jq, but for html',
+  uraian: 'Uses CSS selectors to extract bits of content from HTML files.',
+  tags: [ 'html', 'nanti' ]
+},{
+  url: 'https://medium.com/@asadise/sorting-a-json-array-according-one-property-in-javascript-18b1d22cd9e9',
+  judul: 'Sorting a JSON array according one property in JavaScript',
+  uraian: 'Cara melakukan sorting di JSON berdasarkan 1 field tertentu',
+  tags: [ 'javascript', 'json' ]
+},{
+  url: 'https://simonwillison.net/',
+  judul: 'Simon Willison Datasett',
+  uraian: 'Inspirasi design sederhana, cek bentuk anchornya',
+  tags: [ 'python', 'css', 'design', 'inspirasi' ]
+},{
+  url: 'https://www.joshwcomeau.com/css/designing-shadows/',
+  judul: 'Designing Beautiful Shadows in CSS',
+  uraian: 'Designing Beautiful Shadows in CSS.',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://realpython.com/tutorials/flask/',
+  judul: 'Tutorial Flask',
+  uraian: 'Kumpulan tutorial Flask, web framework yang kedepannya bisa dipelajari.',
+  tags: [ 'python', 'flask' ]
+},{
+  url: 'https://joi.dev/',
+  judul: 'Joi',
+  uraian: 'The most powerful schema description language\r\n' +
+    'and data validator for JavaScript',
+  tags: [ 'joi', 'nodejs', 'javascript' ]
+},{
+  url: 'https://masteringjs.io/axios',
+  judul: 'Belajar Axios',
+  uraian: 'Kumpulan artikel untuk belajar axios. ',
+  tags: [ 'axios', 'javascript' ]
+},{
+  url: 'https://code-maven.com/introduction-to-handlebars-javascript-templating-system',
+  judul: 'Belajar Handlebars',
+  uraian: 'Artikel yang bagus untuk belajar Handlebars. Cukup lengkap pembahasan, bahkan ada sesi untuk membahas helpers.',
+  tags: [ 'handlebars', 'javascript' ]
+},{
+  url: 'https://discord.com/channels/794537085641818124/794537661725409321/890489587867222056',
+  judul: 'Discord: Lume Group Article byYear',
+  uraian: 'Diskusi di Discord: Bagaimana cara untuk grouping article by Year. Kode ini lebih bersih daripada kode yang sudah ku konversi dari Eleventy. \r\n' +
+    'Tapi sayang sepertinya ada sesuatu yang menyebabkan artikelku masih belum bisa sorting by year. Aneh',
+  tags: [ 'deno', 'lume', 'discord' ]
+},{
+  url: 'https://github.com/lite-xl/lite-xl',
+  judul: 'lite-xl',
+  uraian: 'A lightweight text editor written in Lua, adapted from lite. Ringan tapi sayangnya workspace masih belum bagus.',
+  tags: [ 'aplikasi', 'lua', 'editor' ]
+},{
+  url: 'https://sqlime.org/',
+  judul: 'SQLite Playground',
+  uraian: 'Belajar SQLite secara online',
+  tags: [ 'sqlite', 'belajar', 'ini' ]
+},{
+  url: 'https://github.com/lerocha/chinook-database',
+  judul: 'Chinook sample database untuk SQL',
+  uraian: 'Chinook is a sample database available for SQL Server, Oracle, MySQL, etc. Bisa dipakai belajar',
+  tags: [ 'sqlite', 'belajar' ]
+},{
+  url: 'https://antonz.org',
+  judul: 'Blognya Antonz',
+  uraian: 'I’m Anton, software developer and SQLite enthusiast. I work on open-source projects to facilitate developers create awesome products.',
+  tags: [ 'python', 'sqlite' ]
+},{
+  url: 'https://upcloud.com/community/tutorials/install-lets-encrypt-nginx/',
+  judul: 'Install Lets Encrypt di Nginx',
+  uraian: 'Tutorial install Lets Encrypt di Nginx Uplcloud',
+  tags: [ 'upcloud', 'nginx', 'encrypt' ]
+},{
+  url: 'https://benhoyt.com/writings/the-small-web-is-beautiful/',
+  judul: 'The Small Web is Beautifull',
+  uraian: 'Desain sederhana dan isi artikelnya tentang web desain sederhana sangat menarik',
+  tags: [ 'design', 'simple', 'inspirasi' ]
+},{
+  url: 'https://github.com/charlesread/fastify-acl-auth',
+  judul: 'Fastify ACL Auth',
+  uraian: 'Access Control List untuk Fastify.',
+  tags: [ 'nodejs', 'fastify' ]
+},{
+  url: 'https://thebestmotherfucking.website/',
+  judul: 'The best Mother fucking websites',
+  uraian: '',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://atlialp.com/posts/',
+  judul: 'Post::Djordje Atlialp',
+  uraian: 'Lihat tampilan postlistnya. Bisa menjadi inspirasi',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://qutebrowser.com/index.html',
+  judul: 'qutebrowser',
+  uraian: 'browser minimalis dengan vim-binding. Sayangnya sering dianggap malware oleh BitDefender dan Emsisoft akibat developernya males mengsigned aplikasinya',
+  tags: [ 'browser', 'minimal' ]
+},{
+  url: 'https://ozenero.com/nodejs-express-mongodb-one-to-many-related-models#more-11670',
+  judul: 'Mongoose : One to Many',
+  uraian: 'Poligami ala Mongoose mongodb',
+  tags: [ 'mongodb', 'mongoose', 'nodejs' ]
+},{
+  url: 'https://blog.cloudflare.com/october-2021-facebook-outage/',
+  judul: 'Understanding How Facebook Disappeared from the Internet',
+  uraian: 'Bagaimana Facebook, Instagram, dan Whatsapp bisa down seolah - olah ada orang mencabut kabel powernya langsung dari server.',
+  tags: [ 'jaringan', 'fesbuk', 'instagram', 'whatsapp' ]
+},{
+  url: 'https://github.com/badsyntax/handlebars-form-helpers',
+  judul: 'handelbars from helpers',
+  uraian: 'A library of handlebars helpers that help with building forms.',
+  tags: [ 'handlebars', 'javascript' ]
+},{
+  url: 'https://newarkcaptain.com/set-up-private-kubernetes-cluster-in-aws-like-a-champ/',
+  judul: 'Lihat Header dan transisinya',
+  uraian: 'Inspirasi untuk header dan transisinya. Mirip NYTimes',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://jsfiddle.net/npanigrahy/eh3n4xnn/',
+  judul: 'Desain Header dengan mode fixed - dropshadow',
+  uraian: 'Headernya fixed, saat di scroll ke atas maka muncul dropshadow. Tidak perlu jquery kecuali mau pakai menu hamburger sih.',
+  tags: [ 'design', 'inspirasi', 'javascript' ]
+},{
+  url: 'https://www.html.am/html-codes/marquees/css-slide-in-text.cfm',
+  judul: 'CSS Slide in effect',
+  uraian: 'Pure CSS slide in text animation',
+  tags: [ 'css', 'design', 'animation' ]
+},{
+  url: 'https://lenadesign.org/2021/05/15/css-slide-text-animation-slide-effect/',
+  judul: 'CSS Slide Text Animation',
+  uraian: 'Lebih menarik lagi dan sepertinya lebih cocok. ',
+  tags: [ 'css', 'design', 'animation' ]
+},{
+  url: 'https://josephmate.github.io/2021-10-03-my-bug-used-up-100cpu-or-did-it/',
+  judul: '100% CPU: My Fault?',
+  uraian: 'Artikel tentang bagaimana sysadmin meng-track down user yang memakan 100% CPU di VM',
+  tags: [ 'linux', 'networking' ]
+},{
+  url: 'https://codeberg.org/',
+  judul: 'Codeberg',
+  uraian: 'Layanan code hosting, gratis. Menjadi alternatif dari Github dan Notabug. Tapi agak sedikit lemot',
+  tags: [ 'git', 'hosting', 'gratis' ]
+},{
+  url: 'https://www.digitalocean.com/community/tutorials/css-minimal-css-reset',
+  judul: 'DigitalOcean minimal reset CSS',
+  uraian: 'Reset CSS versi digitalocean',
+  tags: [ 'design', 'css', 'reset' ]
+},{
+  url: 'https://dev.to/sagar/three-dots---in-javascript-26ci',
+  judul: 'Three Dots ... in javascript',
+  uraian: 'fungsi titik tiga (...) di javascript. Sangat berguna untuk mengolah array',
+  tags: [ 'javascript' ]
+},{
+  url: 'https://matduggan.com/warp-terminal-emulator-review/',
+  judul: 'Warp: sebuah terminal emulator',
+  uraian: '',
+  tags: [ 'cli', 'linux', 'osx' ]
+},{
+  url: 'https://actix.rs/',
+  judul: 'Actix : web framework untuk Rust',
+  uraian: 'A powerful, pragmatic, and extremely fast web framework for Rust. Kapan - kapan dicoba :)',
+  tags: [ 'rust', 'aplikasi' ]
+},{
+  url: 'https://nightingale.rest/',
+  judul: 'nightingale',
+  uraian: 'A modern, resource-friendly REST client for Windows 10',
+  tags: [ 'rest', 'aplikasi' ]
+},{
+  url: 'https://www.11ty.dev/',
+  judul: 'Eleventy',
+  uraian: 'Eleventy is a simpler static site generator.',
+  tags: [ 'eleventy', 'ssg' ]
+},{
+  url: 'https://support.microsoft.com/en-us/windows/ways-to-install-windows-11-e0edbbfb-cfc5-4011-868b-2ce77ac7c70e',
+  judul: 'Cara menginstall Windows 11 di perangkat yang tidak kompatibel.',
+  uraian: '',
+  tags: [ 'windows11', 'hacks' ]
+},{
+  url: 'https://tuhrig.de/basic-auth-log-out-with-javascript/',
+  judul: 'Basic Auth Logout with Javascript',
+  uraian: '',
+  tags: [ 'javascript' ]
+},{
+  url: 'https://hurl.dev/index.html',
+  judul: 'hurl',
+  uraian: 'Hurl is a command line tool that runs HTTP requests defined in a simple plain text format.',
+  tags: [ 'rest', 'cli', 'aplikasi' ]
+},{
+  url: 'https://kracekumar.com/post/print_http_request/',
+  judul: 'HTTPie and Print HTTP Request',
+  uraian: 'HTTPie is a command-line utility for making HTTP requests with more straightforward syntax',
+  tags: [ 'rest', 'httpie' ]
+},{
+  url: 'https://fonts.google.com/specimen/Alegreya',
+  judul: 'Alegreya',
+  uraian: 'Alegreya font, bagus untuk publishing',
+  tags: [ 'font', 'design' ]
+},{
+  url: 'https://fonts.google.com/specimen/Crimson+Pro',
+  judul: 'Crimson Pro',
+  uraian: 'Crimson Pro sebuah font serif untuk publishing.',
+  tags: [ 'font', 'design' ]
+},{
+  url: 'https://www.ghostplugins.com/steps/drop-shadow-under-header-71',
+  judul: 'drop shadow under header',
+  uraian: '',
+  tags: [ 'design', 'css' ]
+},{
+  url: 'https://stijndewitt.com/2018/06/12/pure-css-drop-shadow-on-scroll/',
+  judul: 'Pure CSS drop shadow on scroll',
+  uraian: 'Bikin drop shadow di fixed header tanpa JS',
+  tags: [ 'design', 'css' ]
+},{
+  url: 'https://www.tabletmag.com/sections/news/articles/plague-poor-gutentag',
+  judul: 'Pague Poor',
+  uraian: 'Desainnya',
+  tags: [ 'design', 'css' ]
+},{
+  url: 'https://andadinosaur.com/',
+  judul: 'And a Dinosaur',
+  uraian: 'Menarik untuk dibaca termasuk desainnya sederhana',
+  tags: [ 'design', 'inspirasi', 'menarik' ]
+},{
+  url: 'https://schnack.cool/',
+  judul: 'schnack',
+  uraian: 'Self hosted commenting system',
+  tags: [ 'javascript', 'nodejs', 'blog' ]
+},{
+  url: 'https://cusdis.com/',
+  judul: 'cusdis',
+  uraian: 'Lightweight, privacy-first, open-source comment system',
+  tags: [ 'blog' ]
+},{
+  url: 'https://codepen.io/heydon/pen/ebQyYV',
+  judul: 'CodePen Home Flexbox One Column Switch',
+  uraian: 'Flexbox responsive tanpa mempergunakan media query',
+  tags: [ 'css', 'flexbox', 'design', 'codepen' ]
+},{
+  url: 'https://ishadeed.com/article/conditional-border-radius/',
+  judul: 'Conditional border radius',
+  uraian: 'Fesbuk like border radius dengan kondisional pakai css',
+  tags: [ 'design', 'css', 'fesbuk' ]
+},{
+  url: 'https://healeycodes.com/porting-niceware-to-rust',
+  judul: 'HealeyCodes',
+  uraian: 'Desain sederhana, situs ini open source, dan dibuat dengan nextJs',
+  tags: [ 'design', 'css', 'inspirasi' ]
+},{
+  url: 'https://rsms.me/',
+  judul: 'rsms',
+  uraian: 'Minimal design tapi enak diliat',
+  tags: [ 'design', 'inspirasi', 'css' ]
+},{
+  url: 'https://stylus-lang.com/',
+  judul: 'Stylus Lang',
+  uraian: 'Expressive, dynamic, robust CSS',
+  tags: [ 'css' ]
+},{
+  url: 'https://github.com/fabiospampinato/cash',
+  judul: 'cash',
+  uraian: 'Cash is an absurdly small jQuery alternative for modern browsers (IE11+) that provides jQuery-style syntax for manipulating the DOM.',
+  tags: [ 'javascript' ]
+},{
+  url: 'https://jakearchibald.com/2021/cors/',
+  judul: 'How to win at CORS',
+  uraian: '',
+  tags: [ 'cors' ]
+},{
+  url: 'https://css-tricks.com/a-complete-guide-to-data-attributes/',
+  judul: 'A Complete Guide to Data Attributes',
+  uraian: 'Atribut data di dalam CSS',
+  tags: [ 'css' ]
+},{
+  url: 'https://12ft.io/',
+  judul: '12ft Ladder',
+  uraian: 'Hilangin iklan di pelbagai situs berita, desainnya juga menarik. Sederhana',
+  tags: [ 'menarik', 'design', 'inspirasi' ]
+},{
+  url: 'https://wolipop.detik.com/worklife/d-5738645/3-contoh-surat-pengunduran-diri-yang-baik-dan-benar',
+  judul: 'Surat Pengunduran Diri',
+  uraian: 'Jika kamu yakin untuk meninggalkan pekerjaan, hal pertama yang harus dilakukan adalah berbicara dengan manajer atau atasan langsung agar mereka tidak terkejut. Setelah selesai melakukannya, kamu siap untuk menulis surat pengunduran diri secara resmi.',
+  tags: [ 'kusaeni' ]
+},{
+  url: 'https://fontesk.com/magnolia-font/',
+  judul: 'magnolia font',
+  uraian: '',
+  tags: [ 'font' ]
+},{
+  url: 'https://github.com/mikecao/umami#readme',
+  judul: 'umami',
+  uraian: 'Umami is a simple, fast, website analytics alternative to Google Analytics.',
+  tags: [ 'analytics', 'gratis' ]
+},{
+  url: 'https://github.com/electerious/Ackee',
+  judul: 'Ackee',
+  uraian: 'Self-hosted, Node.js based analytics tool for those who care about privacy. Ackee runs on your own server, analyzes the traffic of your websites and provides useful statistics in a minimal interface.',
+  tags: [ 'analytics', 'gratis', 'nodejs' ]
+},{
+  url: 'https://jkgan.com/blog/building-blog-nextjs-tailwindcss/',
+  judul: 'Building a Blog with Next.js + Tailwindcss',
+  uraian: '',
+  tags: [ 'nextjs', 'blog' ]
+},{
+  url: 'https://www.baldurbjarnason.com/',
+  judul: 'Baldur Bjarnason',
+  uraian: 'Inspirasi postlist, fonts, dll',
+  tags: [ 'inspirasi', 'design' ]
+},{
+  url: 'https://github.com/soywod/himalaya',
+  judul: 'himalaya',
+  uraian: 'CLI email client',
+  tags: [ 'linux', 'cli', 'aplikasi' ]
+},{
+  url: 'https://www.workspaces.xyz/p/035-joey-banks',
+  judul: 'Workspaces : font spectral',
+  uraian: 'Liat pemakaian fontnya',
+  tags: [ 'font', 'design', 'inspirasi' ]
+},{
+  url: 'https://soffes.blog/bundle-command-line-tool-in-macos-app',
+  judul: 'Simple and Nice design. Keren',
+  uraian: '',
+  tags: [ 'design', 'inspirasi', '💗' ]
+},{
+  url: 'https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/',
+  judul: 'tmux : a quick and easy guide',
+  uraian: 'tutorial mudah dan cepat untuk menguasai tmux',
+  tags: [ 'cli', 'linux' ]
+},{
+  url: 'https://rapidapi.com/collection/list-of-free-apis',
+  judul: 'Free API',
+  uraian: 'Daftar API gratis',
+  tags: [ 'api', 'menarik' ]
+},{
+  url: 'https://caddyserver.com/',
+  judul: 'caddy server',
+  uraian: 'Caddy 2 is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go',
+  tags: [ 'linux', 'server' ]
+},{
+  url: 'https://gist.github.com/rain-1/2d6033ee2b63c0a3ab802b5572df3ba9',
+  judul: 'Raspberry Pi, Static HTTPS site with Docker and Nginx',
+  uraian: '',
+  tags: [ 'raspberrypi', 'linux', 'docker' ]
+},{
+  url: 'https://10015.io/tools/svg-blob-generator',
+  judul: 'SVG blog generator',
+  uraian: '',
+  tags: [ 'svg' ]
+},{
+  url: 'https://blobs.app/',
+  judul: 'SVG blog generator #2',
+  uraian: '',
+  tags: [ 'svg' ]
+},{
+  url: 'https://pibox.io/',
+  judul: 'pibox',
+  uraian: 'Raspberry pi versatile storage server ',
+  tags: [ 'raspberrypi', 'linux' ]
+},{
+  url: 'https://github.com/onthegomap/flatmap',
+  judul: 'Flatmap',
+  uraian: 'Flatmap is a tool that generates Mapbox Vector Tiles from geographic data sources like OpenStreetMap.',
+  tags: [ 'svg', 'maps' ]
+},{
+  url: 'https://cleanup.pictures/',
+  judul: 'cleanup pictures',
+  uraian: 'membersihkan/menghilangkan object dengan cepat tanpa photoshop',
+  tags: [ 'menarik' ]
+},{
+  url: 'https://www.benkuhn.net/hard/',
+  judul: 'You don’t need to work on hard problems',
+  uraian: 'hr-nya menarik',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://archive.org/details/CeramahUstadzSalimAFillah/Bekerja+Adalah+Ibadah+Dalam+Segala+Maknanya+-+Ust.+Salim+A+Fillah.mp3',
+  judul: 'Koleksi Ceramah Islam Ustadz Salim A Fillah',
+  uraian: '',
+  tags: [ 'islam', 'ceramah' ]
+},{
+  url: 'https://www.monterail.com/blog/2016/smart-office-raspberry-pi',
+  judul: 'How we built a truly Smart Office system based on Raspberry Pi',
+  uraian: '',
+  tags: [ 'iot', 'raspberrypi' ]
+},{
+  url: 'https://blog.elementary.io/elementary-os-6-odin-updates-october-2021/',
+  judul: 'Elementary OS 6 Odin',
+  uraian: '',
+  tags: [ 'linux', 'design', 'inspirasi' ]
+},{
+  url: 'https://www.macstories.net/reviews/nova-review-panics-code-editor-demonstrates-why-mac-like-design-matters/',
+  judul: 'nova app review',
+  uraian: 'lihat layout-nya saja sih',
+  tags: [ 'css', 'design', 'inspirasi' ]
+},{
+  url: 'https://dependency-injection.com/',
+  judul: 'Link hover-nya perlu dicermati',
+  uraian: '',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://stackoverflow.com/questions/14597241/setting-expiry-time-for-a-collection-in-mongodb-using-mongoose',
+  judul: 'Mongoose set expired time',
+  uraian: 'Set expired time pada mongoose',
+  tags: [ 'mongoose' ]
+},{
+  url: 'https://blues.io/blog/reactjs-vs-blues-wireless-iot/',
+  judul: 'reactjs vs blues wireless iot',
+  uraian: 'just how simple Internet of Things (IoT) development can be with the help of the right tools like Blues Wireless',
+  tags: [ 'iot', 'raspberrypi' ]
+},{
+  url: 'https://calbryant.uk/blog/the-ultimate-thinkpad/',
+  judul: 'The ultimate Thinkpad',
+  uraian: 'The X230 is a usable machine for portable hacking',
+  tags: [ 'thinkpad', 'hacks' ]
+},{
+  url: 'https://github.com/aarroyoc/teruel',
+  judul: 'Teruel',
+  uraian: 'Teruel is a template engine in ISO Prolog, inspired by Tera and Jinja.',
+  tags: [ 'html', 'template' ]
+},{
+  url: 'https://herotofu.com/solutions/forms-library',
+  judul: 'herotofu : forms library',
+  uraian: 'HTML Forms Library',
+  tags: [ 'design', 'html' ]
+},{
+  url: 'https://www.propublica.org/article/toxmap-poison-in-the-air',
+  judul: 'Pro Publica : toxmap poison in the air',
+  uraian: 'Artikel yang bagus, namun saya lebih tertarik dengan desainnya',
+  tags: [ 'desain', 'inspirasi' ]
+},{
+  url: 'https://blog.jgc.org/2021/11/making-old-usb-printer-support-apple.html',
+  judul: 'Making old USB printer support apple airprint',
+  uraian: 'Making an old USB printer support Apple AirPrint using a Raspberry Pi ',
+  tags: [ 'iot', 'raspberrypi', 'macos' ]
+},{
+  url: 'https://www.fastcompany.com/90693444/jony-ives-first-major-design-since-leaving-apple-isnt-what-youd-expect',
+  judul: 'Jony Ives first major design since leaving Apple isnt what youd expect',
+  uraian: 'But Ives first public project since founding his own design collective, LoveFrom, is an aesthetic 180 from what you might expect. Alongside his team, Ive developed a seal for Terra Carta, an environmental initiative spearheaded by Prince Charles.',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://github.com/oscarotero/awesome-design',
+  judul: 'awesome design',
+  uraian: 'A collection of open source resources for web designers',
+  tags: [ 'design' ]
+},{
+  url: 'https://fontesk.com/',
+  judul: 'fontesk',
+  uraian: 'tempat nyari font gratis yang bagus',
+  tags: [ 'font', 'design' ]
+},{
+  url: 'https://github.com/Asabeneh/30-Days-Of-JavaScript',
+  judul: '30 Days of Javascript',
+  uraian: '30 days of JavaScript programming challenge is a step-by-step guide to learn JavaScript programming language in 30 days. This challenge may take more than 100 days, please just follow your own pace. ',
+  tags: [ 'javascript', 'belajar' ]
+},{
+  url: 'https://github.com/russellgoldenberg/scrollama',
+  judul: 'Scrollama',
+  uraian: 'Scrollama is a modern & lightweight JavaScript library for scrollytelling using IntersectionObserver in favor of scroll events.',
+  tags: [ 'javascript' ]
+},{
+  url: 'http://scrollmagic.io/',
+  judul: 'scrollmagic',
+  uraian: 'The javascript library for magical scroll interactions.',
+  tags: [ 'javascript' ]
+},{
+  url: 'https://github.com/sepandhaghighi/samila',
+  judul: 'samila',
+  uraian: "Samila is a generative art generator written in Python, Samila let's you create arts based on many thousand points. ",
+  tags: [ 'python' ]
+},{
+  url: 'https://jsfiddle.net/t7f97kf4/',
+  judul: 'jsfiddle : css heartbeat',
+  uraian: '',
+  tags: [ 'jsfindlle', 'css' ]
+},{
+  url: 'https://codepen.io/mutedblues/pen/MmPNPG?editors=1100',
+  judul: 'Responsive Hamburger Menu',
+  uraian: '',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://codepen.io/jgarrow/pen/dybwPBq',
+  judul: 'hamburger menu',
+  uraian: 'pure css hamburger menu',
+  tags: [ 'design', 'css', 'inspirasi' ]
+},{
+  url: 'https://www.taniarascia.com/add-comments-to-static-site/',
+  judul: 'Add Comments to Static Site',
+  uraian: 'Membuat comments system sendiri',
+  tags: [ 'nodejs', 'heroku', 'diy' ]
+},{
+  url: 'https://miniflux.app/',
+  judul: 'miniflux',
+  uraian: 'Miniflux is a minimalist and opinionated feed reader.',
+  tags: [ 'aplikasi', 'selfhosting', 'rss' ]
+},{
+  url: 'https://blog.edwardloveall.com/',
+  judul: 'Edward Loveall Blog',
+  uraian: 'fontnya garamond premier dari adobe, cari alternativenya.',
+  tags: [ 'design', 'inspirasi', 'font' ]
+},{
+  url: 'https://vim.rtorr.com/',
+  judul: 'vim cheatset',
+  uraian: '',
+  tags: [ 'vim', 'linux' ]
+},{
+  url: 'https://www.appflowy.io/',
+  judul: 'appflowy',
+  uraian: 'Open Source \r\n' +
+    'Notion Alternative\r\n' +
+    'You are in charge of your data and customizations.',
+  tags: [ 'aplikasi' ]
+},{
+  url: 'https://1linelayouts.glitch.me/',
+  judul: '1 line layouts',
+  uraian: 'Modern CSS layout and sizing techniques that highlight just how robust and impactful a single-line of styling code can be. ',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://youcantdownloadthisimage.online/',
+  judul: "You can't download this image",
+  uraian: 'Or can you? Go ahead and try downloading the lovely Mona Lisa',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://nota.md/',
+  judul: 'nota',
+  uraian: 'markdown editor',
+  tags: [ 'markdown', 'aplikasi' ]
+},{
+  url: 'https://www.kavitareader.com/',
+  judul: 'kavita',
+  uraian: 'Lighting fast with a slick design, Kavita is a rocket fueled self-hosted digital library which supports a vast array of file formats. Install to start reading and share your server with your friends. ',
+  tags: [ 'aplikasi' ]
+},{
+  url: 'https://www.ferretdb.io/',
+  judul: 'Ferret DB',
+  uraian: 'A truly Open Source MongoDB alternative',
+  tags: [ 'mongodb', 'db', 'open source' ],
+  nanti: 'on'
+},{
+  url: 'https://flaviocopes.com/',
+  judul: 'Flavio Copes',
+  uraian: 'Belajar React dan javascript',
+  tags: [ 'belajar', 'javascript', 'react', '💗' ]
+},{
+  url: 'https://picocss.com/',
+  judul: 'picocss',
+  uraian: 'Minimal CSS Framework for semantic HTML',
+  tags: [ 'css' ]
+},{
+  url: 'https://ishadeed.com/article/defensive-css/',
+  judul: 'Defensive CSS',
+  uraian: 'Oftentimes, we wish that there was a way to avoid a certain CSS issue or behaviors from happening. You know, content is dynamic, and things can change on a web page, thus increasing the possibility of a CSS issue or a weird behavior.',
+  tags: [ 'css' ],
+  nanti: 'on'
+},{
+  url: 'https://jsonplaceholder.typicode.com/',
+  judul: 'jsonplaceholder',
+  uraian: 'Free fake API for testing and prototyping. ',
+  tags: [ 'javascript', 'json', 'api', 'gratis' ]
+},{
+  url: 'https://jasonwatmore.com/post/2021/07/01/axios-http-get-request-examples',
+  judul: 'Axios - HTTP GET Request Examples',
+  uraian: 'quick set of examples to show how to send HTTP GET requests to an API using the axios HTTP client which is available on npm.',
+  tags: [ 'axios', 'javascript' ]
+},{
+  url: 'https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3',
+  judul: 'How To Make a Web Application Using Flask in Python 3',
+  uraian: 'Membuat aplikasi web dengan flask',
+  tags: [ 'flask', 'python' ]
+},{
+  url: 'https://www.digitalocean.com/community/tutorials/how-to-use-an-sqlite-database-in-a-flask-application',
+  judul: 'How To Use an SQLite Database in a Flask Application',
+  uraian: 'Membuat aplikasi dengan flask dan SQLite',
+  tags: [ 'flask', 'python' ]
+},{
+  url: 'https://www.digitalocean.com/community/tutorials/how-to-use-one-to-many-database-relationships-with-flask-and-sqlite',
+  judul: 'How To Use One-to-Many Database Relationships with Flask and SQLite',
+  uraian: 'One to Many dengan Flask dan SQLite',
+  tags: [ 'flask', 'python' ]
+},{
+  url: 'https://www.digitalocean.com/community/tutorials/how-to-use-many-to-many-database-relationships-with-flask-and-sqlite',
+  judul: 'How To Use Many-to-Many Database Relationships with Flask and SQLite',
+  uraian: 'Many to Many dengan SQLite dan Flask',
+  tags: [ 'flask', 'python' ]
+},{
+  url: 'https://www.digitalocean.com/community/tutorials/how-to-add-authentication-to-your-app-with-flask-login',
+  judul: 'How To Add Authentication to Your App with Flask-Login',
+  uraian: 'Flask : Auth dengan flask login',
+  tags: [ 'flask', 'python' ]
+},{
+  url: 'https://github.com/remileduc/sherver',
+  judul: 'Sherver',
+  uraian: 'Pure Bash lightweight web server.',
+  tags: [ 'bash', 'aplikasi', 'server' ]
+},{
+  url: 'https://christophergs.com/tutorials/ultimate-fastapi-tutorial-pt-2-url-path-parameters/',
+  judul: 'ultimate fastapi',
+  uraian: 'Ultimate ',
+  tags: [ 'flask', 'python' ]
+},{
+  url: 'https://tinyssh.org/',
+  judul: 'tiny ssh',
+  uraian: 'TinySSH is a minimalistic SSH server which implements only a subset of SSHv2 features.',
+  tags: [ 'linux', 'aplikasi', 'server' ]
+},{
+  url: 'https://ntfy.sh/',
+  judul: 'ntfy',
+  uraian: 'Send push notifications to your phone or desktop via PUT/POST',
+  tags: [ 'go' ],
+  nanti: 'off'
+},{
+  url: 'https://nautil.us/',
+  judul: 'nautilus',
+  uraian: 'Titlenya bagus dengan font Anko',
+  tags: [ 'design', 'inspirasi' ]
+},{
+  url: 'https://rabbithols.github.io/blazemark/',
+  judul: 'Blazemark',
+  uraian: 'Online (Wasp) markdown editor',
+  tags: [ 'markdown', 'wasp' ]
+},{
+  url: 'https://jsavoie.github.io/2021/06/01/letsencrypt.html',
+  judul: 'Lets Encrypt di localhost',
+  uraian: 'Lets Encrypt for internal hostnames',
+  tags: [ 'encrypt', 'server' ]
+},{
+  url: 'https://www.golinuxcloud.com/flask-gunicorn-nginx/',
+  judul: 'Deploy flask with gunicorn and nginx (Step-by-Step)',
+  uraian: 'he process of deploying a flask app on a Linux server. We will use gunicorn as a WSGI server to communicate with our flask app, and Nginx as a proxy server between the gunicorn server and the client.',
+  tags: [ 'python', 'flask' ],
+  nanti: 'on'
+},{
+  url: 'https://fedingo.com/how-to-use-nginx-with-flask/',
+  judul: 'How to Use NGINX with Flask',
+  uraian: 'how to use NGINX with Flask. ',
+  tags: [ 'python', 'flask' ],
+  nanti: 'on'
+},{
+  url: 'https://manropefont.com/',
+  judul: 'manrope',
+  uraian: 'manrope is modern sans-serif font for everyone',
+  tags: [ 'font' ]
+},{
+  url: 'https://www.fastapitutorial.com/',
+  judul: 'FastAPI tutorial',
+  uraian: "Experience building high-performance APIs with Industry-standard best practices. It's gonna be hard but worth it.",
+  tags: [ 'fastapi', 'python' ],
+  nanti: 'on'
+},{
+  url: 'https://github.com/megadose/holehe',
+  judul: 'Holehe',
+  uraian: 'holehe allows you to check if the mail is used on different sites like twitter, instagram and will retrieve information on sites with the forgotten password function.',
+  tags: [ 'App', 'hacks', 'python' ],
+  nanti: 'on'
+},{
+  url: 'https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world',
+  judul: 'The Flask Mega-Tutorial',
+  uraian: 'start on a journey to learn how to create web applications with Python and the Flask framework',
+  tags: [ 'flask', 'python' ],
+  nanti: 'off'
+},{
+  url: 'https://strftime.org/',
+  judul: 'Python strftime cheatsheet ',
+  uraian: '',
+  tags: [ 'python' ],
+  nanti: 'on'
+},{
+  url: 'https://gist.github.com/charlesroper/f2da6152d6789fa6f25e9d194a42b889',
+  judul: 'How to setup a practically free CDN',
+  uraian: 'Ga paham praktiknya, namun tentu saja tidak 100% gratis karena tetap harus berlangganan B2',
+  tags: [ 'Clouds' ],
+  nanti: 'on'
+},{
+  url: 'https://simplecss.org/',
+  judul: 'Simple CSS',
+  uraian: 'is a classless CSS framework that makes semantic HTML look good, really quickly.',
+  tags: [ 'css', 'design' ]
+},{
+  url: 'https://develie.hashnode.dev/exploring-flask-sqlalchemy-queries',
+  judul: 'Tips SQLAlchemy Query',
+  uraian: 'Biar ga pusing kudu pahami ini',
+  tags: [ 'sqlite', 'python', 'flask' ],
+  nanti: 'on'
+},{
+  url: 'https://docs.sqlalchemy.org/en/14/orm/tutorial.html',
+  judul: 'SQLAlchemy : Query',
+  uraian: 'Dokumen asli query Sqlalchemi. ',
+  tags: [ 'python', 'sqlalchemy' ],
+  nanti: 'on'
+}

+ 89 - 0
package-lock.json

@@ -19,6 +19,7 @@
         "fastify-secure-session": "^2.3.1",
         "fastify-static": "^4.2.3",
         "handlebars": "^4.5.0",
+        "markdown-it": "^12.2.0",
         "mongoose": "^6.0.6",
         "mongoose-paginate-v2": "^1.4.2",
         "pino-pretty": "^7.0.0",
@@ -869,6 +870,14 @@
         "node": ">=8.6"
       }
     },
+    "node_modules/entities": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+      "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
     "node_modules/escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -1806,6 +1815,14 @@
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
       "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
     },
+    "node_modules/linkify-it": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz",
+      "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==",
+      "dependencies": {
+        "uc.micro": "^1.0.1"
+      }
+    },
     "node_modules/locate-path": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -1876,6 +1893,31 @@
         "semver": "bin/semver.js"
       }
     },
+    "node_modules/markdown-it": {
+      "version": "12.2.0",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz",
+      "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==",
+      "dependencies": {
+        "argparse": "^2.0.1",
+        "entities": "~2.1.0",
+        "linkify-it": "^3.0.1",
+        "mdurl": "^1.0.1",
+        "uc.micro": "^1.0.5"
+      },
+      "bin": {
+        "markdown-it": "bin/markdown-it.js"
+      }
+    },
+    "node_modules/markdown-it/node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+    },
+    "node_modules/mdurl": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+    },
     "node_modules/memory-pager": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
@@ -2873,6 +2915,11 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+    },
     "node_modules/uglify-js": {
       "version": "3.14.2",
       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz",
@@ -3667,6 +3714,11 @@
         "ansi-colors": "^4.1.1"
       }
     },
+    "entities": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+      "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w=="
+    },
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -4416,6 +4468,14 @@
         }
       }
     },
+    "linkify-it": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz",
+      "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==",
+      "requires": {
+        "uc.micro": "^1.0.1"
+      }
+    },
     "locate-path": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -4470,6 +4530,30 @@
         }
       }
     },
+    "markdown-it": {
+      "version": "12.2.0",
+      "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz",
+      "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==",
+      "requires": {
+        "argparse": "^2.0.1",
+        "entities": "~2.1.0",
+        "linkify-it": "^3.0.1",
+        "mdurl": "^1.0.1",
+        "uc.micro": "^1.0.5"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+        }
+      }
+    },
+    "mdurl": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+    },
     "memory-pager": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
@@ -5233,6 +5317,11 @@
       "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
       "peer": true
     },
+    "uc.micro": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+    },
     "uglify-js": {
       "version": "3.14.2",
       "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz",

+ 4 - 0
routes/index.js

@@ -31,7 +31,11 @@ const routes = app => {
 					},
 					'lean': true
 				})
+<<<<<<< HEAD
+				//return data;
+=======
 				//console.log(data);
+>>>>>>> b55f80bdd16ba1ddca614e4a0d97f8f2bad97570
 				return reply.view('./html/dashboard.hbs', {
 					title: 'Bookmarknya Kus',
 					bookmark: data,

文件差異過大導致無法顯示
+ 0 - 1362
yarn.lock