Refine and cleanup
This commit is contained in:
10
README.md
10
README.md
@@ -1,10 +1,10 @@
|
||||
# kohngrüti app
|
||||
# kongruity app
|
||||
|
||||
kohngrüti employs Large Language Model ("LLM") semantic grouping functionality to cluster large volumes of "to dos" or issue tags in development (or other) settings, according to thematic or topical similarity.
|
||||
kongruity employs Large Language Model ("LLM") semantic grouping functionality to cluster large volumes of "to dos" or issue tags in development (or other) settings, according to thematic or topical similarity.
|
||||
|
||||
(To learn more about this topic, see, e.g., [Kozlowski A., Boutyline A., Semantic Structure in Large Language Model Embeddings Aug. 2025, arXiv:2508.10003v1:04 Aug 2025](https://arxiv.org/html/2508.10003v1)).
|
||||
|
||||
In the world of kohngrüti, these "to dos" are called "sticky notes." kohngrüti's React/Vite UI views a board of seemingly chaotic "sticky notes". But with one click, they are transformed into manageable, actionable groups, each with a header that explains the group semantic interrelation.
|
||||
In the world of kongruity, these "to dos" are called "sticky notes." kongruity's React/Vite UI views a board of seemingly chaotic "sticky notes". But with one click, they are transformed into manageable, actionable groups, each with a header that explains the group semantic interrelation.
|
||||
|
||||
The backend is an Express API that serves "sticky note" data and proxies semantic grouping requests to Antrhopic Claude.
|
||||
|
||||
@@ -20,8 +20,8 @@ Developers may feel free to install other LLM SDKs and alter the syntax at backe
|
||||
### 1. Unzip the project
|
||||
|
||||
```bash
|
||||
unzip kohngrüti.zip
|
||||
cd kohngrüti
|
||||
unzip kongruity.zip
|
||||
cd kongruity
|
||||
```
|
||||
|
||||
### 2. Create a secrets file
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import express from 'express';
|
||||
import cors from 'cors';
|
||||
import notesRoutes from './routes/notes.routes.js';
|
||||
import router from './routes/notes.routes.js';
|
||||
|
||||
const app = express();
|
||||
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
|
||||
app.use('/v1/notes', notesRoutes);
|
||||
app.use('/v1/notes', router);
|
||||
|
||||
app.use((req, res) => {
|
||||
res.status(404).json({ error: `Requested path is invalid or does not exist: ${req.method} ${req.originalUrl}` });
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
const config = {
|
||||
port: process.env.PORT || 3001,
|
||||
};
|
||||
|
||||
export default config;
|
||||
1292
backend/package-lock.json
generated
Normal file
1292
backend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -30,7 +30,7 @@ router.post('/cluster', async (req, res) => {
|
||||
const clusters = await clusterNotes(notes);
|
||||
res.json(clusters);
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: 'Clustering failed' });
|
||||
res.status(500).json({ error: `Clustering failed: ${err}` });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import app from './app.js';
|
||||
import config from './config/index.js';
|
||||
|
||||
const PORT = config.port || 3001;
|
||||
const PORT = process.env.PORT || 3001;
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Backend running on port ${PORT}`);
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=recenter" />
|
||||
<title>kohngrüti app</title>
|
||||
<title>kongruity app</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
@@ -2,7 +2,7 @@ const Navbar = () => {
|
||||
return (
|
||||
<div className="main-head-box">
|
||||
<div className="main-head-subbox-left">
|
||||
<h1 className="main-head">kohngrüti</h1>
|
||||
<h1 className="main-head">kongruity</h1>
|
||||
</div>
|
||||
<div className="main-head-subbox-right">
|
||||
<span className="material-symbols-outlined">recenter</span>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.main-head-box {
|
||||
border-radius: 8px;
|
||||
border: 1px solid #6dd6f4;
|
||||
background-color: rgb(92, 0, 91);
|
||||
background-color: rgb(92, 0 91);
|
||||
display: flex;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,11 +36,11 @@ describe('App routing', () => {
|
||||
|
||||
it('should render the Home page on "/"', async () => {
|
||||
renderApp('/');
|
||||
expect(await screen.findByText('kohngrüti')).toBeInTheDocument();
|
||||
expect(await screen.findByText('kongruity')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('should redirect unknown routes to Home', async () => {
|
||||
renderApp('/some/random/path');
|
||||
expect(await screen.findByText('kohngrüti')).toBeInTheDocument();
|
||||
expect(await screen.findByText('kongruity')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user