Library / SDK
ln-dev7/circle avatar
ln-dev7/circle

Circle ships mock data and a store directory, so what you clone is an interface rather than a product

UI - Project management interface inspired by Linear. Built with Next.js and shadcn/ui, this application allows tracking of issues, projects and teams.

4,555 stars483 forksTypeScriptMIT

At a glance

What is it?
Circle is a project management interface inspired by Linear, built with Next.js, TypeScript, shadcn/ui and Tailwind CSS, with tracking for issues, projects and teams. There is no database, no API layer and no authentication in the dependency list, and the repository carries a mock-data directory that stands in for all three.
Who is it for?
Circle fits a developer who wants a polished Linear-style interface to build on and is prepared to supply the data layer, since the repository provides the components, the styling and a mock-data set and nothing behind them. It does not fit anyone expecting a working tracker on clone.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 31 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 5, 2026, and from our analysis. They are not legal advice.

Editorial analysis

There is a mock-data directory and no database dependency

The dependency list is the place to look, and there is nothing in it that stores data.

The list is entirely client and interface: Next.js at 15.2.8, React and React DOM at ^19.0.1, Tailwind CSS with tailwind-merge and tailwind-merge's companion clsx and class-variance-authority, and a long set of Radix UI primitives covering dialog, dropdown-menu, select, tabs, switch, slider, tooltip, popover, avatar, checkbox, collapsible, context-menu, label, progress, separator and toggle.

Alongside those there are form libraries, react-hook-form with hookform resolvers, a day picker, date-fns, a chart library in recharts, a drag and drop pair in react-dnd with its HTML5 backend, a command palette in cmdk, a toast library in sonner, resizable panels, a theme switcher in next-themes, and motion.

There is no ORM, no query client, no driver and no server package.

And the repository root has a `mock-data/` directory. So what you clone is an interface with sample records in it, and the layer that would normally sit behind it is the part you are expected to write. That is the single most important fact about this repository, and the README does not state it.

A lexorank dependency implies the ordering logic was taken from a tracker

One dependency stands out because it is not a general purpose library: `@kayron013/lexorank` at ^2.0.0.

The package name identifies it as a ranking implementation, and ranking a list of issues by priority or position is exactly the problem a linear ranked key solves. Nothing in the README says what it is used for, so treat this as an inference from the name, but the alternative reading is unlikely: nothing else in a project management interface needs a ranking library.

If you have seen this pattern before, the reason is that it is how Jira has ordered issues for years, using a string key you can insert between two neighbours without rewriting the rest of the list. That property matters for a drag and drop interface, since reordering a large list by rewriting integers is expensive and produces conflicts when two people reorder at once.

So there is a real design decision embedded in that one dependency: issue ordering is string based and incremental rather than an integer column you rewrite.

The repository also depends on react-dnd and its HTML5 backend, which is the mechanism a drag and drop reorder would use, so the two fit together.

If you are reading this to judge the code, note that neither the ranking algorithm nor the drag behaviour is described anywhere in the documentation.

Three icon libraries are installed at once

The dependency list contains `@remixicon/react`, `lucide-react` and `react-icons`.

Three icon sets in one project is unusual, and each pulls in a different set of modules. lucide-react is a curated stroke icon set, react-icons is a package that bundles many icon families from several sources, and remixicon is one more curated set.

The reason this happens is usually migration rather than design. A template starts with one set, adds components from somewhere that used another, and never deletes the first. The result is that the icon in any given component depends on which set the component author happened to use, and the bundle carries more than it needs.

You can see the same pattern elsewhere in the list. There are two class name utilities, clsx for conditional joining and tailwind-merge for resolving conflicting Tailwind classes, which is the intended pairing rather than a duplicate. There are also both `.eslintrc` and `eslint.config.mjs` at the repository root, which is the ESLint legacy and flat config formats at the same time, and the lint script is `next lint`.

So if you adopt this template, the first cleanup task is not the data layer, it is deciding which icon set is the one and deleting the other two.

components.json is the shadcn contract, not a component

There is a file named `components.json` at the root, and its name is misleading if you have not used shadcn/ui before.

It is not a component. It is the configuration file the shadcn/ui command line tool reads to know where your components live and how they should be written, which is why it sits at the repository root next to tsconfig.json and next.config.ts.

That also explains the shape of the component directory. The root has `components/`, `hooks/`, `lib/`, `store/`, `app/`, `public/` and `mock-data/`, and shadcn/ui components are copied into your source tree rather than installed from a package, so they are yours to edit. The Radix UI packages in the dependency list are the primitives those copied components wrap.

The styling stack is consistent with that. Tailwind CSS with `tailwind-merge` and `class-variance-authority`, plus `tailwindcss-animate` for the transitions the primitives use, and `clsx` for conditional class names. `cn` is the helper these combine behind, which is why `lib/` exists.

There is also a `postcss.config.mjs` for Tailwind, and `next.config.ts` written in TypeScript rather than the more common JavaScript.

If you are upgrading components later, this file is what tells the tool where to write them, so keep it.

The dev script turns on Turbopack, so builds and dev runs differ

The scripts section is six entries and the first one is the informative one.

`dev` is `next dev --turbopack`. `build` is `next build` with no flag, and `start` is `next start`.

So development runs on Turbopack and the production build does not. That is a real difference rather than a cosmetic one, since the two use different compilers, and it means a development session succeeding tells you less about the production build than it would if both used the same path. If you are evaluating the template, run `pnpm build` rather than relying on `pnpm dev`.

The remaining scripts are `lint` running `next lint`, `format` running `prettier --write .`, and `prepare` running `husky install`.

That prepare script is why there is a `.husky/` directory, and it means installing dependencies installs git hooks. There is a `.lintstagedrc.json` alongside it, which is the configuration for running checks against staged files, and a `.prettierrc` with a `.prettierignore`, plus a `.eslintrc` and the flat `eslint.config.mjs` mentioned earlier.

The installation path in the README is four commands:

shell
git clone https://github.com/ln-dev7/circle.git
cd circle
pnpm install
pnpm dev

The lockfile is `pnpm-lock.yaml`, so pnpm rather than npm is the expected package manager.

The BaseUI variant of this interface is not in the repository

There is one line in the README that changes what you are licensing.

It says the BaseUI code is available on Square UI Pro, with a link to a page under pro.lndevui.com describing a Circle BaseUI template.

So there are two versions of this interface. The one in this repository is MIT licensed, with a LICENSE.md at the root. The BaseUI variant is sold separately and is not here.

That matters because the README says the UI components are shadcn/ui, and the BaseUI name refers to a different component foundation. So the paid variant is not a support package or a theme for this code, it is a parallel implementation of the same interface on a different primitive library.

If you were evaluating this for a commercial project, the question to answer first is which of the two you actually want, because the one in the repository and the one being sold are not the same code.

There is no other licensing information in the README, and the package is marked private at version 0.1.0, so there is no published package to inspect either.

The repository is written for agents as well as contributors

Two root files are unusual and they point the same way.

There is an `AI_GUIDE.md` at the root and an `llms.txt` file beside it. Both exist to be read by a model rather than by a person browsing the documentation, and neither has a section explaining what is inside them.

For a project management interface that already claims to be inspired by an existing product, that is a coherent choice rather than an odd one. The audience for a template like this is often a developer who intends to hand it to an assistant to build on, and `llms.txt` is the file format that exists for that, while `AI_GUIDE.md` is the conventional name for a house style guide written for a coding assistant.

The other interesting root entry is `store/`. A directory named store alongside `components/`, `hooks/` and `lib/` suggests client-side state, which combined with the absence of a backend and the presence of `mock-data/` says the interface reads its records from somewhere local.

Whether that is a library you would keep is the question to answer before building on it. A template that keeps state in the browser is a good starting point for a demo and a poor foundation for a multi-user tracker without replacing that layer.

Maintenance is recent but unshipped: the last push is dated 2026-09-04 and there are no GitHub releases.

Editorial conclusion

Circle fits a developer who wants a polished Linear-style interface to build on and is prepared to supply the data layer, since the repository provides the components, the styling and a mock-data set and nothing behind them. It does not fit anyone expecting a working tracker on clone. Before you start, decide where your data will come from and whether the store directory is a pattern you want to keep, and read the licensing position on the paid BaseUI variant, because that version of the code is not in this repository.

Frequently asked questions

What is the Circle project?

A project management interface inspired by Linear, built with Next.js, TypeScript, shadcn/ui and Tailwind CSS, which allows tracking of issues, projects and teams with a modern, responsive UI. The package is private at version 0.1.0 under an MIT license, and the repository has no GitHub releases.

How do I install and run Circle?

Clone the repository with git clone https://github.com/ln-dev7/circle.git, change into the circle directory, run pnpm install to install dependencies, then run pnpm dev to start the development server. The dev script runs next dev with Turbopack, while the build script is a plain next build, so pnpm build is the closer analogue of production.

Does Circle have a backend or database?

No. The dependency list is entirely client and interface packages, with no ORM, query client, driver or server package, and the repository contains a mock-data directory. What you get is the interface with sample records, and the data layer is the part you supply.

What UI library does Circle use?

shadcn/ui with Tailwind CSS for styling, on Next.js and TypeScript. The Radix UI packages in the dependency list are the primitives those components wrap, and components.json at the repository root is the shadcn/ui configuration file rather than a component of its own.

Is Circle free to use commercially?

The code in this repository is under an MIT license with a LICENSE.md at the root. Separately, the README states that the BaseUI code is available on Square UI Pro, so a variant built on a different component foundation is sold rather than included here. Decide which of the two you need before assuming the MIT terms cover it.

Official sources

  1. Issues
  2. License: MIT
  3. ln-dev7/circle on GitHub
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ln-dev7-circle.svg)](https://hysenlabs.com/projects/ln-dev7-circle)