<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh" -->

---
title: I wrote a fully-functioning File Explorer, using TypeScript.
description: Xplorer is not written on traditional language like C, C++ or C#. It is written on TypeScript, HTML and SCSS, using the Electron framework. There are four...
canonical: https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: I wrote a fully-functioning File Explorer, using TypeScript. | daily.dev
og:description: Xplorer is not written on traditional language like C, C++ or C#. It is written on TypeScript, HTML and SCSS, using the Electron framework. There are four...
og:url: https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh
og:image: https://api.daily.dev/og/posts/0MdtFS6Oh.png
og:image:alt: I wrote a fully-functioning File Explorer, using TypeScript.
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# I wrote a fully-functioning File Explorer, using TypeScript.

**[DEV](https://daily.dev/sources/devto)** · 2 min read · 158 upvotes · 11 comments

## Summary

Xplorer is not written on traditional language like C, C++ or C#. It is written on TypeScript, HTML and SCSS, using the Electron framework. There are four available default themes for now. Xplorer helps you organize your files easier by supporting multiple tabs.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://dev.to/kimlimjustin/i-wrote-a-fully-functioning-file-explorer-using-typescript-1e4n>

## Community discussion

Top comments from developers on daily.dev.

**@andrei0x309** · 3 upvotes

> Nice design and POC, but if you look for performance, you won't look for an explorer wrote on top of electron lib.

**@alexotano179** · 3 upvotes

> Amazing work creating File Explorer using typescript  Is HTML and electron

**@bento** · 1 upvotes

> Great project!
> I'll run it and take a look this week.
> A couple of tips I have:
>
> 1. You write your doc like JavaScript, no need to add types to the doc in TS.
>
> ```
> /**
>  * Get file icon of a file/folder
>  * @param {string} filename - name of the file/folder
>  * @param {string} category - category of the file/folder (optional)
>  * @param {boolean} HTMLFormat - return with the HTML format (optional)
>  * @returns {string} the preview of the file/folder
>  */
> ```
> The types were handy in JS because we couldn't check them, but here you already typed them.
> ```
> const fileThumbnail = (
>  filePath:...

**@\_aleksandar370144868902** · 0 upvotes

> I’m impressed! Great job!

**@hektor** · 0 upvotes

> omg that's really cool!! good job man

## Similar posts on daily.dev

- [Don’t just attend KubeCon \+ CloudNativeCon, Merge Forward your experience\!](https://daily.dev/posts/don-t-just-attend-kubecon-cloudnativecon-merge-forward-your-experience--l0rpp73x8) · CNCF · 1 upvotes · 0 comments
- [Announcing H2 2026 KCDs](https://daily.dev/posts/announcing-h2-2026-kcds-m96goajm1) · CNCF · 1 upvotes · 0 comments
- [Two months of Open Community Groups](https://daily.dev/posts/two-months-of-open-community-groups-asf52zhbs) · CNCF · 0 upvotes · 0 comments

---

Tags: [#c](https://daily.dev/tags/c), [#typescript](https://daily.dev/tags/typescript)

[View this post on daily.dev](https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"I wrote a fully-functioning File Explorer, using TypeScript.","url":"https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh"},"datePublished":"2021-09-25T22:11:12.200Z","dateModified":"2021-10-07T14:17:10.317Z","description":"Xplorer is not written on traditional language like C, C++ or C#. It is written on TypeScript, HTML and SCSS, using the Electron framework. There are four...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dd3f130c357fd031160d4243871a0f0d","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/dd3f130c357fd031160d4243871a0f0d","isAccessibleForFree":true,"articleSection":"DEV","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"DEV","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/devto","url":"https://daily.dev/sources/devto"},"commentCount":11,"discussionUrl":"https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":158},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":11}],"keywords":"c,typescript","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"DEV","item":"https://daily.dev/sources/devto"},{"@type":"ListItem","position":3,"name":"I wrote a fully-functioning File Explorer, using TypeScript."}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/i-wrote-a-fully-functioning-file-explorer-using-typescript--0mdtfs6oh","comment":[{"@type":"Comment","text":"Nice design and POC, but if you look for performance, you won’t look for an explorer wrote on top of electron lib.","datePublished":"2021-09-26T00:24:28.611Z","url":"https://daily.dev/posts/0MdtFS6Oh#c-rFLGbKIiS","author":{"@type":"Person","name":"Andrei O.","url":"https://daily.dev/andrei0x309","image":"https://media.daily.dev/image/upload/f_auto/v1632806353/avatars/1RDGCrVO9"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3}},{"@type":"Comment","text":"Amazing work creating File Explorer using typescript  Is HTML and electron","datePublished":"2021-09-26T12:32:38.493Z","url":"https://daily.dev/posts/0MdtFS6Oh#c-VAFQgVwA4","author":{"@type":"Person","name":"Alex Otano","url":"https://daily.dev/alexotano179","image":"https://lh3.googleusercontent.com/a-/AOh14Gj34d1V9Vd3UDLeH4PIAvtcnS36udazREjru1xAdKo=s100"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3}},{"@type":"Comment","text":"Great project!\nI’ll run it and take a look this week.\nA couple of tips I have:\n\nYou write your doc like JavaScript, no need to add types to the doc in TS.\n\n/**\n * Get file icon of a file/folder\n * @param {string} filename - name of the file/folder\n * @param {string} category - category of the file/folder (optional)\n * @param {boolean} HTMLFormat - return with the HTML format (optional)\n * @returns {string} the preview of the file/folder\n */\n\nThe types were handy in JS because we couldn’t check them, but here you already typed them.\nconst fileThumbnail = (\n filePath: string,\n category = 'folder',\n HTMLFormat = true\n): string =>\n...\n\n\nYou often type things as any even though you know what they’re going to be. Why not use a tuple and assign undefined to it? As in let something: Type | undefined\n\nI can try to help out with this part if you’re interested. \nGreat work!","datePublished":"2021-10-25T06:56:40.250Z","url":"https://daily.dev/posts/0MdtFS6Oh#c-omCkyp16T","author":{"@type":"Person","name":"Bento","url":"https://daily.dev/bento","image":"https://avatars.githubusercontent.com/u/51338450?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}},{"@type":"Comment","text":"I’m impressed! Great job!","datePublished":"2021-09-26T21:14:07.748Z","url":"https://daily.dev/posts/0MdtFS6Oh#c-Jiax-g87Q","author":{"@type":"Person","name":"Aleksandar","url":"https://daily.dev/_aleksandar370144868902","image":"https://media.daily.dev/image/upload/f_auto/v1626508690/avatars/XviAI-9sk"}},{"@type":"Comment","text":"omg that’s really cool!! good job man","datePublished":"2021-10-01T12:18:46.322Z","url":"https://daily.dev/posts/0MdtFS6Oh#c-W7Qye8Ftm","author":{"@type":"Person","name":"Heitor Castello","url":"https://daily.dev/hektor","image":"https://avatars.githubusercontent.com/u/71948649?v=4"}}]}
```

