Front-end dojo: projekt för att träna utvecklarfärdigheter (5 nya + 43 gamla)
1. Begreppsklon
Applikationen Notion är älskad av många; den låter dig optimera ditt arbetsflöde, arbeta med dokument, schemalägga uppgifter och synkronisera data mellan enheter.
Repl.it är ett verktyg för samarbetskodredigering i realtid. Du kan välja flera språk: JavaScript, Python, Go och kör koden direkt i webbläsaren. Mycket användbart för snabba demos och kodintervjuer.
Hur man kör och exekverar kod (serversidan) i webbläsaren (klientsidan).
Läs indata (källkod) och visa exekveringsresultatet.
Hur man skapar filer och mappar på webben och sparar resultaten.
Hur man markerar kodsyntax.
3. Google Photos Clone
Google Photos är en tjänst för att lagra och dela foton.
Alla moderna fotoapplikationer kan utföra grundläggande funktioner: ladda upp, beskära, etc. Folk vill skapa sina egna avatarer och dela foton av katter, så du måste kunna arbeta med bilder.
Vad du lär dig genom att skapa en Google Foto-klon:
Hur man skapar responsiva bilder på telefoner, surfplattor, bärbara datorer och till och med gigantiska TV-skärmar.
Hur man hanterar bilduppladdningar, särskilt stora bilder (>1MB) och massuppladdningar.
Bearbeta bildfiler, beskära och ändra storlek på foton för miniatyrer eller när du öppnar ett galleri.
bonus: hur man lagrar bilder i molnet eller den lokala databasen.
4. Gifsky-klon
gifski konverterar video till GIF med hjälp av funktionerpngkvant för effektiva korsbildspaletter och tidsmässig kantutjämning. Resultatet är en GIF med tusentals blommor per bildruta.
Layer är en gemenskap där alla kan rita en pixel på en delad "bräda". Den ursprungliga idén föddes på Reddit. r/Layer-gemenskapen är en metafor för delad kreativitet, att alla kan vara skapare och bidra till en gemensam sak.
Vad du kommer att lära dig när du skapar ditt eget Layer-projekt:
Hur JavaScript-canvas fungerar Att veta hur man använder en canvas är en kritisk färdighet i många applikationer.
Hur man samordnar användarbehörigheter. Varje användare kan rita en pixel var 15:e minut utan att behöva logga in.
Squoosh är en bildkomprimeringsapplikation med många avancerade alternativ.
GIF 20 MB
Genom att skapa din egen version av Squoosh lär du dig:
Hur man arbetar med bildstorlekar
Lär dig grunderna i Drag'n'Drop API
Förstå hur API och händelseavlyssnare fungerar
Hur man laddar upp och exporterar filer
Notera: Bildkompressorn är lokal. Det är inte nödvändigt att skicka ytterligare data till servern. Du kan ha kompressorn hemma, eller så kan du använda den på en server efter eget val.
Kalkylatorn
Kom igen? Allvarligt? Kalkylator? Ja, precis, en miniräknare. Att förstå grunderna i matematiska operationer och hur de fungerar tillsammans är en avgörande färdighet för att förenkla dina applikationer. Förr eller senare kommer du att behöva ta itu med siffror och ju förr desto bättre.
Alla har använt en sökmotor, så varför inte skapa en egen? Sökrobotar behövs för att söka information. Alla använder dem varje dag och efterfrågan på denna teknik och specialister kommer bara att växa med tiden.
Googles sökmotor
Vad du lär dig genom att skapa din egen sökmotor:
Hur crawlers fungerar
Hur man indexerar webbplatser och hur man rangordnar dem efter betyg och rykte
Hur man lagrar indexerade webbplatser i en databas och hur man arbetar med databasen
Musikspelare (Spotify, Apple Music)
Alla lyssnar på musik – det är bara en integrerad del av våra liv. Låt oss skapa en musikspelare för att bättre förstå hur den grundläggande mekaniken i en modern musikströmningsplattform fungerar.
Spotify
Vad du kommer att lära dig genom att skapa din egen musikströmningsplattform:
Hur man arbetar med API. använd API från Spotify eller Apple Music
Hur man spelar, pausar eller spola tillbaka till nästa/föregående spår
Hur man ändrar volym
Hur man hanterar användardirigering och webbläsarhistorik
Filmsökningsapp med React (med krokar)
Det första du kan börja med är att skapa en filmsökningsapp med hjälp av React. Nedan är en bild på hur den slutliga ansökan kommer att se ut:
Vad lär du dig
Genom att bygga den här appen kommer du att förbättra dina React-färdigheter genom att använda det relativt nya Hooks API. Exempelprojektet använder React-komponenter, massor av krokar, ett externt API och naturligtvis lite CSS-styling.
Teknisk stack och funktioner
Reagera med krokar
skapa reagera-app
JSX
CSS
Utan att använda några klasser ger dessa projekt dig den perfekta ingången till funktionella React och kommer definitivt att hjälpa dig under 2020. du kan hitta exempel på projekt här. Följ instruktionerna eller gör den till din egen.
Chattapp med Vue
Ett annat bra projekt för dig att göra är att skapa en chattapp med mitt favorit JavaScript-bibliotek: VueJS. Applikationen kommer att se ut ungefär så här:
Vad lär du dig
I den här handledningen kommer du att lära dig hur du gör en Vue-app från början - skapa komponenter, hantera tillstånd, skapa rutter, ansluta till tredjepartstjänster och till och med hantera autentisering.
Teknisk stack och funktioner
Vue
vuex
Vue router
CLI -vy
Pusher
CSS
Det här är ett riktigt bra projekt för att komma igång med Vue eller förbättra dina befintliga färdigheter för att komma in i utvecklingen 2020. du kan hitta handledning här.
Vacker väderapp med Angular 8
Det här exemplet hjälper dig att skapa en vacker väderapp med Angular 8:
Vad lär du dig
Detta projekt kommer att lära dig värdefulla färdigheter i att bygga applikationer från grunden - från design till utveckling, hela vägen till en implementeringsklar applikation.
Teknisk stack och funktioner
Vinkel 8
Firebase
Rendering på serversidan
CSS med Grid och Flexbox
Mobilvänlig och anpassningsförmåga
Mörkt läge
Vackert gränssnitt
Det jag verkligen älskar med detta allomfattande projekt är att man inte studerar saker isolerat. Istället lär du dig hela utvecklingsprocessen, från design till slutlig implementering.
Att göra-applikation med Svelte
Svelte är som den nya killen på det komponentbaserade tillvägagångssättet - åtminstone liknar React, Vue och Angular. Och det här är en av de hetaste nya produkterna för 2020.
Att göra-appar är inte nödvändigtvis det hetaste ämnet, men det hjälper dig verkligen att finslipa dina Svelte-kunskaper. Det kommer att se ut så här:
Vad lär du dig
Denna handledning visar dig hur du skapar en applikation med Svelte 3, från början till slut. Du kommer att använda komponenter, styling och händelsehanterare
Next.js är det mest populära ramverket för att bygga React-applikationer som stöder rendering på serversidan direkt.
Detta projekt kommer att visa dig hur du skapar en e-handelsapplikation som ser ut så här:
Vad lär du dig
I det här projektet kommer du att lära dig hur du utvecklar med Next.js – skapa nya sidor och komponenter, extrahera data och stil och distribuera en Next-applikation.
Teknisk stack och funktioner
Next.js
Komponenter och sidor
Datasampling
stilisering
Projektinstallation
SSR och SPA
Det är alltid bra att ha ett verkligt exempel som en e-handelsapp för att lära sig något nytt. Du kan hitta handledningen här.
Fullfjädrad flerspråkig blogg med Nuxt.js
Nuxt.js är för Vue, vad Next.js är för React: ett utmärkt ramverk för att kombinera kraften i server-side rendering och ensidiga applikationer
Den sista applikationen du kan skapa kommer att se ut så här:
Vad lär du dig
I det här exempelprojektet får du lära dig hur du skapar en komplett webbplats med Nuxt.js, från den första installationen till den slutliga implementeringen.
Den drar nytta av många av de coola funktionerna som Nuxt har att erbjuda, som sidor och komponenter och styling med SCSS.
Teknisk stack och funktioner
Nuxt.js
Komponenter och sidor
Storyblock-modul
Hagfish
Vuex för statlig förvaltning
SCSS för styling
Nuxt mellanvaror
Det här är ett riktigt coolt projekt, som innehåller många fantastiska Nuxt.js-funktioner. Jag personligen älskar att arbeta med Nuxt så du borde prova det eftersom det också kommer att göra dig till en fantastisk Vue-utvecklare.
Blogga med Gatsby
Gatsby är en utmärkt statisk webbplatsgenerator som använder React och GraphQL. Detta är resultatet av projektet:
Vad lär du dig
I den här handledningen kommer du att lära dig hur du använder Gatsby för att skapa en blogg som du kommer att använda för att skriva dina egna artiklar med hjälp av React och GraphQL.
Teknisk stack och funktioner
Gatsby
Reagera
GraphQL
Plugins och teman
MDX/Markdown
Bootstrap CSS
mallar
Om du någonsin har velat starta en blogg, det här är ett bra exempel om hur man gör det med React och GraphQL.
Jag säger inte att WordPress är ett dåligt val, men med Gatsby kan du bygga högpresterande webbplatser med hjälp av React – vilket är en fantastisk kombination.
Blogga med Gridsome
Gridsome för Vue... Okej, vi hade redan det här med Next/Nuxt.
Men detsamma gäller för Gridsome och Gatsby. Båda använder GraphQL som sitt datalager, men Gridsome använder VueJS. Detta är också en fantastisk statisk webbplatsgenerator som hjälper dig att skapa fantastiska bloggar:
Vad lär du dig
Det här projektet kommer att lära dig hur du skapar en enkel blogg för att komma igång med Gridsome, GraphQL och Markdown. Den täcker också hur man distribuerar en applikation via Netlify.
Teknisk stack och funktioner
Gridsomt
Vue
GraphQL
Markdown
nätifiera
Detta är förvisso inte den mest omfattande handledningen, men den täcker de grundläggande begreppen Gridsome och Markdown kan vara en bra utgångspunkt.
SoundCloud-liknande ljudspelare med Quasar
Quasar är ett annat Vue-ramverk som kan användas för att skapa mobilapplikationer. I det här projektet kommer du att skapa en ljudspelarapplikation, till exempel:
Vad lär du dig
Medan andra projekt huvudsakligen fokuserar på webbapplikationer, kommer detta att visa dig hur du skapar en mobilapplikation med Vue och Quasar-ramverket.
Du bör redan ha Cordova igång med Android Studio/Xcode konfigurerad. Om inte, har manualen en länk till Quasar-webbplatsen där de visar hur du ställer in allt.
Teknisk stack och funktioner
kvasar
Vue
Cordova
WaveSurfer
UI-komponenter
Litet projekt, som visar Quasars kapacitet för att skapa mobila applikationer.
Kreditkortsformulär
En cool kreditkortsform med smidiga och njutbara mikrointeraktioner. Inkluderar nummerformatering, verifiering och automatisk korttypsidentifiering. Den är byggd på Vue.js och är också fullt lyhörd. (Du kan se här.)
Förstå hur du visar och placerar element på sidan, särskilt kreditkortsinformationen som visas överst i formuläret
stapeldiagram
Ett histogram är ett diagram eller en graf som representerar kategoriska data med rektangulära staplar med höjder eller längder proportionella mot de värden de representerar.
De kan appliceras vertikalt eller horisontellt. Ett vertikalt stapeldiagram kallas ibland ett linjediagram.
Vad du lär dig:
Visa data på ett strukturerat och begripligt sätt
Dessutom: Lär dig hur du använder elementet canvas och hur man ritar element med det
Här du kan hitta information om världens befolkning. De är sorterade efter år.
Twitter Heart Animation
Redan 2016 introducerade Twitter denna fantastiska animation för sina tweets. Från och med 2019 ser det fortfarande ut som en del, så varför inte skapa en själv?
Vad du lär dig:
Arbeta med CSS-attribut keyframes
Manipulera och animera HTML-element
Kombinera JavaScript, HTML och CSS
Sökbara GitHub-arkiv
Det finns inget fancy här – GitHub-förråd är bara en glorifierad lista.
Målet är att visa arkiven och låta användaren filtrera dem. Använda sig av officiella GitHub API för att få arkiv för varje användare.
Chattar är ett populärt sätt att kommunicera på grund av sin enkelhet och användarvänlighet. Men vad är det egentligen som driver moderna chattrum? WebSockets!
Vad du lär dig:
Använd WebSockets, realtidskommunikation och datauppdateringar
Arbeta med användaråtkomstnivåer (till exempel har ägaren av en chattkanal rollen admin, och andra i rummet - user)
Bearbeta och validera formulär - kom ihåg att chattfönstret för att skicka ett meddelande är input
Skapa och gå med i olika chattar
Arbeta med personliga meddelanden. Användare kan chatta med andra användare privat. I huvudsak kommer du att upprätta en WebSocket-anslutning mellan två användare.
Navigering i randig stil
Det som gör den här navigeringen unik är att popover-behållaren förvandlas för att passa innehållet. Det finns en elegans i denna övergång jämfört med det traditionella beteendet att öppna och stänga en ny popover.
Vad du lär dig:
Kombinera CSS-animationer med övergångar
Dim innehållet och tillämpa aktiv klass på flytande element
Pacman
Skapa din egen version av Pacman. Detta är ett bra sätt att få en uppfattning om hur spel utvecklas och förstå grunderna. Använd ett JavaScript-ramverk, React eller Vue.
Du kommer att lära dig:
Hur element rör sig
Hur man bestämmer vilka tangenter man ska trycka på
Hur man bestämmer kollisionsögonblicket
Du kan gå längre och lägga till spökrörelsekontroller
Du hittar ett exempel på detta projekt i förvaret GitHub
Att skapa en applikation av typen CRUD för användaradministration kommer att lära dig grunderna för utveckling. Detta är särskilt användbart för nya utvecklare.
Du kommer att lära dig:
Vad är routing
Hur man hanterar datainmatningsformulär och kontrollerar vad användaren har angett
Hur man arbetar med databasen – skapa, läs, uppdatera och ta bort åtgärder
Om du vill skapa appar, börja med en väderapp. Detta projekt kan slutföras med Swift.
Förutom att få erfarenhet av att bygga en applikation kommer du att lära dig:
Hur man arbetar med API
Hur man använder geolokalisering
Gör din applikation mer dynamisk genom att lägga till textinmatning. I den kommer användare att kunna ange sin plats för att kontrollera vädret på en specifik plats.
Du behöver ett API. För att få väderdata, använd OpenWeather API. Mer information om OpenWeather API här.
Chattfönster
Mitt chattfönster i aktion, öppet på två webbläsarflikar
Att skapa ett chattfönster är det perfekta sättet att komma igång med sockets. Valet av teknisk stack är enormt. Node.js är till exempel perfekt.
Du kommer att lära dig hur sockets fungerar och hur du implementerar dem. Detta är den största fördelen med detta projekt.
Om du är en Laravel-utvecklare som vill arbeta med sockets, läs min Artikel
Om du är ny på kontinuerlig integration (CI), lek med GitLab CI. Ställ in några miljöer och försök köra ett par tester. Det är inte ett särskilt svårt projekt, men jag är säker på att du kommer att lära dig mycket av det. Många utvecklingsteam använder nu CI. Att veta hur man använder det är användbart.
Du kommer att lära dig:
Vad är GitLab CI
Hur man konfigurerar .gitlab-ci.ymlsom talar om för GitLab-användaren vad den ska göra
Hur man distribuerar till andra miljöer
Webbplatsanalysator
Gör en skrapa som analyserar semantiken för webbplatser och skapar deras betyg. Du kan till exempel kontrollera om alt-taggar saknas i bilder. Eller kolla om sidan har SEO-metataggar. En skrapa kan skapas utan användargränssnitt.
Du kommer att lära dig:
Hur fungerar skrapan?
Hur man skapar DOM-väljare
Hur man skriver en algoritm
Om du inte vill sluta där, skapa ett användargränssnitt. Du kan också skapa en rapport på varje webbplats du kontrollerar.
Konfigurera din egen webbpaketskonfiguration från början
Tekniskt sett är detta inte en applikation, men det är en mycket användbar uppgift för att förstå hur webpack fungerar från insidan. Nu blir det inte en "svart låda", utan ett förståeligt verktyg.
krav:
Kompilera es7 till es5 (grunderna).
Kompilera jsx till js - eller - .vue till .js (du måste lära dig laddare)
Konfigurera webbpaketutvecklingsserver och omladdning av heta moduler. (vue-cli och create-react-app använder båda)
Använd Heroku, now.sh eller Github, lär dig hur du distribuerar webbpaketprojekt.
Ställ in din favoritförprocessor för att kompilera css - scss, less, stylus.
Lär dig hur du använder bilder och svgs med webpack.
Allvarligt? Tudushka? Det finns tusentals av dem. Men tro mig, det finns en anledning till denna popularitet.
Tudu-appen är ett bra sätt att se till att du förstår grunderna. Testa att skriva en applikation i vanilla Javascript och en i ditt favoritramverk.
Lära sig:
Skapa nya uppgifter.
Kontrollera att fälten är ifyllda.
Filtrera uppgifter (slutförda, aktiva, alla). Använda sig av filter и reduce.
Du kommer att förstå hur både webbapplikationer och native applikationer fungerar, vilket kommer att skilja dig från den grå massan.
Vad vi ska studera:
Web sockets (snabbmeddelanden)
Hur inbyggda applikationer fungerar.
Hur mallar fungerar i inbyggda applikationer.
Organisera rutter för bearbetning av förfrågningar i inbyggda applikationer.
Textredigerare
Syftet med en textredigerare är att minska ansträngningen för användare som försöker konvertera sin formatering till giltig HTML-kod. En bra textredigerare tillåter användare att formatera text på olika sätt.
Någon gång har alla använt en textredigerare. Så varför inte skapa det själv?
Reddit klon
reddit är en social nyhetsaggregering, webbinnehållsklassificering och diskussionswebbplats.
Reddit tar upp det mesta av min tid, men jag fortsätter att umgås med det. Att skapa en Reddit-klon är ett effektivt sätt att lära sig programmering (medan du surfar på Reddit samtidigt).
Reddit ger dig en mycket rik API. Lämna inte några funktioner eller gör saker på måfå. I den verkliga världen med kunder och kunder kan du inte arbeta slumpmässigt, annars kommer du snabbt att förlora ditt jobb.
Smarta kunder kommer omedelbart att inse att jobbet utförs dåligt och kommer att hitta någon annan.
Om du skriver Javascript-kod är chansen stor att du använder en pakethanterare. En pakethanterare låter dig återanvända befintlig kod som andra personer har skrivit och publicerat.
Att förstå hela utvecklingscykeln för ett paket kommer att ge en mycket bra upplevelse. Det finns många saker du behöver veta när du publicerar kod. Du måste tänka på säkerhet, semantisk versionering, skalbarhet, namnkonventioner och underhåll.
Paketet kan vara vad som helst. Om du inte har en idé, skapa din egen Lodash och publicera den.
freeCodeCamp är en ideell organisation. Den består av en interaktiv webbaserad lärplattform, ett communityforum online, chattrum, Medium-publikationer och lokala organisationer som avser att göra lärande webbutveckling tillgängligt för alla.
Du kommer att vara mer än kvalificerad för ditt första jobb om du lyckas klara hela kursen.
Skapa en HTTP-server från början
HTTP-protokollet är ett av huvudprotokollen genom vilka innehåll färdas på Internet. HTTP-servrar används för att visa statiskt innehåll som HTML, CSS och JS.
Att kunna implementera HTTP-protokollet från början kommer att utöka din kunskap om hur saker samverkar.
Till exempel, om du använder NodeJs, då vet du att Express tillhandahåller en HTTP-server.
För referens, se om du kan:
Konfigurera en server utan att använda några bibliotek
Servern måste servera HTML-, CSS- och JS-innehåll.
Implementera en router från grunden
Övervaka ändringar och uppdatera servern
Om du inte vet varför, använd Gå lång och försök skapa en HTTP-server Caddy från början.
Skrivbordsapp för anteckningar
Vi gör väl alla anteckningar?
Låt oss skapa en anteckningsapp. Applikationen måste spara anteckningar och synkronisera dem med databasen. Bygg en inbyggd app med Electron, Swift eller vad du vill och vad som fungerar för ditt system.
Kombinera gärna detta med den första utmaningen (textredigerare).
Som en bonus kan du prova att synkronisera din stationära version med webbversionen.
Podcasts (mulen klon)
Vem lyssnar inte på poddar?
Skapa en webbapplikation med följande funktionalitet:
Skapa ett konto
Sök efter podcaster
Betygsätt och prenumerera på poddar
Stoppa och spela, ändra hastighet, framåt och bakåt funktioner i 30 sekunder.
Prova att använda iTunes API som utgångspunkt. Om du känner till andra resurser, skriv i kommentarerna.