Lompat ke konten
dokumentasi.id
Commit 314576d
v1
Star2 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

1

Ringkasan Proyek FreeStuffDev

FreeStuffDev adalah direktori layanan gratis untuk developer: database, hosting, autentikasi, sampai perkakas kecil untuk prototyping dan pembangunan MVP. Proyeknya open-source, bisa dilihat di freestuff.dev, dan dibangun dengan Astro. README.md:6-10

Tidak ada database di balik situs ini. Setiap layanan adalah satu berkas Markdown di src/content/tools, dan seluruh halaman diturunkan dari berkas itu pada saat build.

Satu berkas Markdown, satu layanan

Skema collection tools menetapkan lima field wajib: title, snippet, link, tags, dan createdAt. Tiga field lain opsional: thumbnail, updatedAt, dan isPaid. src/content/config.ts:3-14

Isi setelah frontmatter adalah daftar fitur gratis, satu fitur per baris. src/content/tools/ably-realtime.md:11-13

Aliran dari berkas ke halaman berjalan satu arah: collection dibaca sekali, lalu dipakai bersama oleh beberapa rute.

graph TD
  MD["src/content/tools/*.md"] --> COL["toolCollection di config.ts"]
  COL --> GC["getCollection('tools')"]
  GC --> IDX["/ (index.astro)"]
  GC --> REC["/recent (recent.astro)"]
  GC --> TAG["/tags/:tag"]
  GC --> ALT["/alternative/:slug"]
  IDX --> CARD["Card.astro"]
  REC --> CARD
  TAG --> CARD
  ALT --> CARD
  style MD fill:#336791,color:#fff
  style COL fill:#f59e0b,color:#000
  style GC fill:#8b5cf6,color:#fff
  style IDX fill:#2d7d46,color:#fff
  style REC fill:#2d7d46,color:#fff
  style TAG fill:#2d7d46,color:#fff
  style ALT fill:#2d7d46,color:#fff
  style CARD fill:#2d7d46,color:#fff
%% fig: Dari berkas Markdown ke halaman
%% desc: Berkas di src/content/tools masuk ke collection tools, dibaca getCollection, lalu digambar Card.astro di empat rute.
Fig. 1: Dari berkas Markdown ke halamanBerkas di src/content/tools masuk ke collection tools, dibaca getCollection, lalu digambar Card.astro di empat rute.

Empat rute daftar memakai komponen kartu yang sama; beranda memetakan hasil collection menjadi <Card tool={tool} /> di dalam satu div. src/pages/index.astro:69-75 Detail tipe dan validasinya dibahas di Skema Content Collection tools, sedangkan template berkas dan aturan kontribusi dibahas di Format Berkas dan Aturan Kontribusi.

Aturan kurasi isPaid

README menetapkan dua ambang penerimaan. Situs menerima layanan gratis atau free trial minimal 1 tahun. Kalau layanan hanya memberi trial 7 hari atau tidak punya tawaran gratis sama sekali, kontributor menulis isPaid: true di frontmatter. README.md:13-22 README juga menolak tool yang spesifik bahasa atau framework, tautan ke dokumentasi atau forum suatu tool, dan tautan ke "bagian dari tool tertentu". README.md:16-22

Karena isPaid dideklarasikan sebagai boolean opsional di skema, penghapusan tool berbayar dari daftar utama terjadi lewat penyaringan, bukan lewat perubahan skema. src/content/config.ts:3-14

Penyaringan berjalan saat build. Beranda mengambil collection dengan predikat data.isPaid !== true src/pages/index.astro:8-11, dan halaman recent memakai predikat yang sama src/pages/recent.astro:7-10.

graph LR
  FM["frontMatter isPaid"] --> Q{"isPaid === true ?"}
  Q -- tidak --> LIST["tampil di / dan /recent"]
  Q -- ya --> BADGE["badge Paid Tool di Card.astro"]
  BADGE --> OTHER["tetap terbaca di /tags dan /alternative"]
  style FM fill:#336791,color:#fff
  style Q fill:#f59e0b,color:#000
  style LIST fill:#2d7d46,color:#fff
  style BADGE fill:#dc2626,color:#fff
  style OTHER fill:#8b5cf6,color:#fff
%% fig: Cabang kurasi isPaid
%% desc: isPaid true mengeluarkan tool dari daftar utama dan memunculkan badge Paid Tool, tetapi berkasnya tetap terbaca di halaman tag dan alternatif.
Fig. 2: Cabang kurasi isPaidisPaid true mengeluarkan tool dari daftar utama dan memunculkan badge Paid Tool, tetapi berkasnya tetap terbaca di halaman tag dan alternatif.

Card.astro menyiapkan badge Paid Tool untuk setiap tool yang isPaid benar src/components/Card.astro:18-25. Halaman tag dan halaman alternatif membaca getCollection('tools') tanpa filter, jadi tool berbayar tetap muncul di sana src/pages/tags/[slug].astro:8-10 src/pages/alternative/[slug].astro:8-9.

⚠️ isPaid: true bukan penghapusan. Berkasnya tetap ada di collection dan tetap terbaca di halaman tag serta halaman alternatif; hanya daftar utama yang menyembunyikannya. src/pages/index.astro:8-11

Tumpukan Astro

Proyek berjalan di atas Astro 4 dengan Tailwind sebagai satu-satunya integrasi. Versi yang dipakai adalah batas bawah caret pada package.json.

PaketVersiPeran
astro^4.3.2framework inti: routing berkas, content collection, astro build
@astrojs/check^0.4.1pemeriksaan tipe yang dipanggil sebelum build
@astrojs/tailwind^5.1.0integrasi Tailwind untuk Astro
tailwindcss^3.4.1utility CSS
sass^1.70.0preprocessor untuk berkas gaya
typescript^5.3.3tipe untuk skrip frontmatter

package.json:13-20

ScriptPerintahGuna
devastro devserver pengembangan
startastro devalias dari dev
buildastro check && astro buildcek tipe lalu build produksi
previewastro previewpratinjau hasil build
astroastroakses CLI Astro

package.json:6-12

Repositori memakai yarn 1.22.18 sebagai package manager. package.json:5 Script build merangkai astro check di depan astro build, sehingga kegagalan tipe menghentikan build; urutan itu dan konfigurasi deploy dijelaskan di Build, Pemeriksaan Tipe, dan Deploy. Integrasi Tailwind didaftarkan di array integrations pada astro.config.mjs:5-8, sementara struktur tampilan dan temanya dibahas di Layout, Sidebar, dan Tema.

Peta rute

Situs ini kecil: enam rute dinamis dan statis menutup seluruh fitur, dan semuanya membaca collection yang sama.

RuteBerkasIsi
/src/pages/index.astrodaftar tool gratis dalam urutan acak, dengan kotak pencarian
/recentsrc/pages/recent.astrotool gratis diurutkan dari createdAt terbaru
/tags/:tagsrc/pages/tags/satu halaman per tag unik
/alternative/:slugsrc/pages/alternative/tool lain yang berbagi tag dengan satu tool
/favoritessrc/pages/favorites.astrotool yang disimpan pembaca
/submitsrc/pages/submit.astroform yang berakhir di pull request
/aboutsrc/pages/about.astropenjelasan proyek dan maintainer

Tiga halaman menutup fitur yang tidak terlihat dari tabel: Beranda dan Pencarian Klien untuk penyaring teks di sisi klien, Halaman Recent dan Pengurutan untuk urutan tanggal, dan Penelusuran Tag untuk indeks tag. Dua halaman turunan punya alur sendiri: Halaman Alternatif per Tool dan Fitur Favorit di Local Storage. Rute /submit dijelaskan di Alur Form Submit ke Pull Request.

/about tidak menyentuh collection sama sekali. Halaman itu hanya menyusun teks statis di dalam Layout dan menyalakan noIndex={true} agar mesin pencari melewatkannya. src/pages/about.astro:11-15