- Notifications
You must be signed in to change notification settings - Fork8
davidwparker/programmingtil-svelte
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
npm run dev -- --port 5000modified: README.mdmodified: src/hooks.tsnew file: src/lib/components/icons/UiMoonSolid.sveltenew file: src/lib/components/icons/UiSunOutline.sveltemodified: src/lib/components/icons/index.tsmodified: src/lib/components/navbar/Nav.sveltemodified: src/lib/shared/stores.tsnew file: src/lib/shared/theme.tsmodified: src/routes/__layout.sveltenew file: src/routes/app/theme.tsNote: skipped name "episode 29" to sync up with my other SvelteKit post about examples.
Resources
modified: src/lib/app/comments/CommentCard.sveltemodified: src/lib/app/comments/CommentForm.sveltemodified: src/lib/app/posts/PostCard.sveltemodified: src/lib/app/posts/PostForm.sveltemodified: src/lib/components/navbar/Nav.sveltemodified: src/routes/__layout.sveltemodified: src/routes/index.sveltemodified: src/routes/posts/[slug].sveltemodified: src/routes/posts/[slug]/edit.sveltemodified: src/routes/users/sign-in.sveltemodified: src/routes/users/sign-up.sveltemodified: tailwind.config.cjsResources
modified: src/routes/index.sveltemodified: src/routes/posts/index.tsnew file: src/routes/rss.tsnew file: .eslintrc.cjsmodified: README.mdmodified: package-lock.jsonmodified: package.jsondeleted: scripts/setupTypeScript.jsrenamed: src/hooks.js -> src/hooks.tsmodified: src/lib/app/comments/CommentForm.sveltemodified: src/lib/app/posts/PostCard.sveltemodified: src/lib/app/posts/PostForm.svelterenamed: src/lib/components/icons/index.js -> src/lib/components/icons/index.tsmodified: src/lib/components/navbar/Nav.sveltedeleted: src/lib/shared/apis.jsnew file: src/lib/shared/apis.tsrenamed: src/lib/shared/helpers.js -> src/lib/shared/helpers.tsrenamed: src/lib/shared/stores.js -> src/lib/shared/stores.tsmodified: src/routes/__layout.sveltemodified: src/routes/index.svelterenamed: src/routes/posts/[id].js -> src/routes/posts/[id].tsmodified: src/routes/posts/[slug].sveltemodified: src/routes/posts/[slug]/edit.svelterenamed: src/routes/posts/index.js -> src/routes/posts/index.tsdeleted: src/routes/sitemap.xml.jsnew file: src/routes/sitemap.xml.tsmodified: src/routes/users/[slug].sveltemodified: src/routes/users/settings.sveltemodified: src/routes/users/sign-in.sveltemodified: src/routes/users/sign-up.svelterenamed: src/routes/users/sign_in.js -> src/routes/users/sign_in.tsrenamed: src/routes/users/sign_out.js -> src/routes/users/sign_out.tsdeleted: src/service-worker.jsnew file: src/service-worker.tsdeleted: static/tailwind.cssmodified: svelte.config.jsnew file: tsconfig.jsonmodified: src/hooks.jsdeleted: src/hooks/index.jsmodified: src/lib/app/posts/PostCard.sveltedeleted: src/lib/components/layouts/ProtectedLayout.sveltemodified: src/lib/components/navbar/Nav.sveltemodified: src/lib/shared/helpers.jsmodified: src/lib/shared/stores.jsmodified: src/routes/__layout.sveltemodified: src/routes/about.sveltemodified: src/routes/index.sveltemodified: src/routes/users/settings.sveltemodified: src/routes/users/sign-in.sveltemodified: src/routes/users/sign_in.jsmodified: src/routes/users/sign_out.jsResources:
npm updatemodified: .gitignorenew file: .prettierignoremodified: README.mdmodified: package-lock.jsonmodified: package.jsonmodified: src/global.d.tsmodified: src/hooks/index.jsrenamed: src/hooks/index.js -> src/hooks.jsmodified: src/lib/shared/apis.jsrenamed: src/routes/$error.svelte -> src/routes/__error.svelterenamed: src/routes/$layout.svelte -> src/routes/__layout.sveltemodified: src/routes/posts/[id].jsmodified: src/routes/posts/index.jsmodified: src/routes/users/sign_in.jsmodified: src/routes/users/sign_out.jsdeleted: svelte.config.cjsnew file: svelte.config.jsmodified: tailwind.config.cjsnew file: src/routes/sitemap.xml.jsmodified: README.mdmodified: src/lib/app/posts/PostCard.sveltemodified: src/lib/app/posts/PostForm.sveltemodified: src/lib/components/navbar/Nav.sveltemodified: src/lib/shared/apis.jsmodified: src/routes/index.sveltemodified: src/routes/posts/index.jsmodified: src/routes/users/sign_in.jsmodified: src/routes/users/sign_out.jsnew file: src/routes/posts/[id].jsmodified: README.mdmodified: src/hooks/index.jsmodified: src/lib/app/posts/PostCard.sveltemodified: src/lib/app/posts/PostForm.sveltemodified: src/lib/components/navbar/Nav.sveltemodified: src/lib/shared/stores.jsmodified: src/routes/$layout.sveltemodified: src/routes/index.sveltemodified: src/routes/posts/index.jsmodified: src/routes/users/sign-in.sveltemodified: src/routes/users/sign_in.jsmodified: src/routes/users/sign_out.jsnew file: src/routes/posts/[slug]/new file: src/routes/posts/new.svelteREADME.mdpackage-lock.jsonpackage.jsonsrc/ambient.d.tssrc/global.d.tssrc/hooks/index.jssrc/lib/app/comments/CommentForm.sveltesrc/lib/app/posts/PostCard.sveltesrc/lib/app/posts/PostForm.sveltesrc/lib/components/buttons/Submit.sveltesrc/lib/components/layouts/ProtectedLayout.sveltesrc/lib/components/navbar/Nav.sveltesrc/lib/shared/apis.jssrc/lib/shared/helpers.jssrc/lib/shared/stores.jssrc/routes/$layout.sveltesrc/routes/index.sveltesrc/routes/posts/[slug].sveltesrc/routes/posts/index.jssrc/routes/users/[slug].sveltesrc/routes/users/settings.sveltesrc/routes/users/sign-in.sveltesrc/routes/users/sign-up.sveltesrc/routes/users/sign_in.jssrc/routes/users/sign_out.jssrc/service-worker.jsnew file: .prettierrcmodified: README.mdnew file: src/lib/app/comments/CommentCard.sveltenew file: src/lib/app/comments/CommentForm.sveltenew file: src/lib/app/posts/PostCard.sveltenew file: src/lib/app/posts/PostForm.sveltemodified: src/lib/shared/helpers.jsmodified: src/routes/index.sveltemodified: src/routes/posts/[slug].sveltemodified: src/routes/users/sign-in.sveltemodified: src/routes/users/sign-up.svelte# modified: src/routes/index.svelte# new file: src/routes/posts/[slug].svelte# modified: src/routes/users/[slug].svelte# modified: src/routes/users/sign-in.svelte#new file: src/lib/components/layouts/ProtectedLayout.svelte#modified: src/lib/components/navbar/Nav.svelte#modified: src/routes/about.svelte#modified: src/routes/users/settings.svelte#modified: README.md#modified: package-lock.json#modified: package.json#modified: src/app.html#modified: src/routes/$error.svelte#modified: src/routes/index.svelte#new file: src/routes/users/[slug].svelte#modified: svelte.config.cjs# Update Rails post_policy: if didn't already# Users can only create up to 3 postsdefcreate?# user.posts.size < 3trueend
package.jsonsrc/lib/components/navbar/Nav.sveltesrc/routes/index.sveltesrc/routes/users/settings.svelteThanks to @flayks and @mushineesan on Discord for helping me with DOMPurify.
- Prettier
- Nav = klasses
- Settings = goto if no $user
- index = transition, create form, edit form, delete post
Load fake DB
rails c (or create data how you want first)Content from: https://jaspervdj.be/lorem-markdownum/content = """# Nec latratibus armos una## Exactus dederunt dignabitur ventre armis alteraLorem markdownum oculos. Pennis sunt hoc olim qui, clausa[quo](http://traharrobustior.net/) illa adpositi. Auratis latet ense quondamOccupat tempus.- Flammae vastique est quod quod solito honor- Ara cursu- Vidisse motibusEt testa extemplo pectoris mactatarumque fatentem rupit: terruit arva, non. Ait[mons arva non](http://www.quoque-scelerato.com/), non atque perpetimur satisconiuge rostro enim, *est* fugit? A sum per addendum in mihi carminibus fecit,dedisset *aequora*. Functo aut officioque pharetra gentis gerebat Phasidos abtenus sunt sequitur nulla tinguatur occupat Palladaque. Postarum dum felix, pianimbi facta, serpens pondere generis forte potest sanguine arma lactantiaquetegit!Erit ut correpti, quique veri auditaque hastam fetibus iuventus harenis utroquelinguae iungat. [Incaluere illa](http://quod.org/pericula) labentia ventris inangues ne suas sulcum tiliae exanimem obvertit, in fames ursi accipit praecordia*at*. Ictu ut, meo qui tamen quisquis, nunc quem alternare, umero! Ornatosproelia magno, **inde longius** et adspexit iaculoque condidit septem doletDamasicthona *colla* refert veniam.## Quod cur saturae Armeniae OrienteErat propiore quas quaerentibus victima memorabat artis inmittitur notatas illisquos demittant trepidare: procul. Quaeritur liceret iamque? Has in nec croceocum possit, successor perterrita voles blandimenta deos *puellam*, dixit, annosnil. Viscera e Pallas illis; erat vocant mirum sed! Filius unxit carpit *additprimum regna* herbas, custodemque [inmittitur](http://www.desibi.org/sub) nutritinspirare caligine fiducia currus, tibi senta retenta.- Minor cruor versato et Tethyn- Hunc novit postquam dura sua avidissima ad- Novato in sedit expugnacior expulit concurreret audita- Pars in sed cum Minos quid rimas- Antra sub corpus castos- Ardere illud inde longeNec *monte* celerem monet at pavere, virtus ebibit Dianae. Des nunc aut suis:certum fortunata at curis [et](http://www.adsensit.org/alimentaque.html).Mercede non male illa Peleusque, frater vicit et vocem, in noctis. Fecerattemplum ponit, substravit, *unco se quam* notum et. Sed dimittere fervet. drm_push.mysql = usSnippetScraping; uddi -= terminalHexadecimal; if (21 > -4) { on_vga.uat_bmp_directory(lossless, dimm + baseIpBlu, rate( click_standalone_full)); banner.frameworkCDel(backlinkShell, 2); } else { ibm.addressQbe += qwerty_syn_pdf; language(3224, architectureBarDesktop); baseband_software_source(modifierRestore - ascii); } var riscCtr = card_kilohertz.dropFlopsAffiliate(matrixEditor) + protector_file(sharewareBrowserRecursion + freewarePaper); recursionWindow += latency * websiteEbookPlagiarism;Et linquit cedere de intrarunt in sumere Cythno dum, stellatus solito compressitnosset et exsiliantque inmitis **profundi**. Iecur legumque avidoque sublimiataedia pavit qui furor dant truces et *deque*."""20.times do |n| user = User.all.sample Post.create!( user: user, title: "This is a test #{n}", content: content, published_at: Time.now - rand(1..8).day )endNew NPM packages:
npm i snarkdown --savenpm i @tailwindcss/line-clamp --savesrc/app.htmlsrc/routes/$layout.sveltesrc/routes/index.sveltetailwind.config.cjsBackend, and why using localStorage:waiting-for-dev/devise-jwt#126
tldr;
- cannot use different domains.
- long-term, we'll be using the same APIs with our mobile app.
- update to check and compare/use the AUD
Concerns
- XSS
package.jsonsrc/components/navbar/Nav.sveltesrc/routes/_layout.sveltesrc/routes/users/settings.sveltesrc/routes/users/sign-in.sveltesrc/shared/helpers.jssrc/shared/stores.jsnew alertsnew submit buttonnew iconscmp/navbar/nav > settings linkroutes/users/sign-in > submit buttonroutes/users/sign-up > submit buttonroutes/users/settingssign-up.sveltesign-in.svelte.env > API_ENDPOINTpackage.jsonsign-in.sveltesign-up.svelteNav.svelteSign up Vercel.Add project via Vercel > Github (authorize).(let fail if not "main/prod")Change branch (if not on main yet), for example this is onep9.Set ENV Variables. For this one, since this is "production" (for now), we'll put on staging + production.We'll later setup a proper staging vs production environment on Vercel.
TODO: once this episode is published, we'll be switching our main branch around.
src/components/navbar/Nav.sveltesrc/routes/users/sign-in.sveltesrc/shared/stores.jsBugfix: sign in AUDsrc/components/navbar/Nav.sveltesrc/routes/_layout.sveltesrc/routes/users/sign-in.sveltesrc/shared/stores.jsBasic styling
package.jsonwebpack.config.jsstatic/tailwind.csspostcss/*package.json
"dependencies": { "@fullhuman/postcss-purgecss": "^2.3.0", "@tailwindcss/forms": "^0.2.1", "autoprefixer": "^9.8.6", "body-parser": "^1.19.0", "cssnano": "^4.1.10", "dotenv": "^8.2.0", "express": "^4.17.1", "helmet": "^3.23.3", "postcss": "^7.0.35", "sirv": "^1.0.11", * "tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.0.1" }, "devDependencies": { "css-loader": "^3.6.0", "node-fetch": "^2.6.1", "npm-run-all": "^4.1.5", "postcss-cli": "^7.1.1", "postcss-loader": "^3.0.0", }npx degit "sveltejs/sapper-template#webpack" my-appcd my-appnpm installnpm run devAbout
Topics
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.