Skip to content

Commit cea1ec8

Browse files
committed
Land the first set of commits
0 parents  commit cea1ec8

13 files changed

+254
-0
lines changed

.github/dependabot.yaml

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: '/'
5+
groups:
6+
github-actions:
7+
patterns:
8+
- '*'
9+
schedule:
10+
interval: daily
11+
open-pull-requests-limit: 20
12+
- package-ecosystem: npm
13+
directory: '/'
14+
groups:
15+
react:
16+
patterns:
17+
- 'react'
18+
- 'react-*'
19+
- '@react/*'
20+
eslint:
21+
patterns:
22+
- 'eslint'
23+
- 'eslint-*'
24+
- '@eslint/*'
25+
- 'typescript-eslint'
26+
- '@typescript-eslint/*'
27+
prettier:
28+
patterns:
29+
- 'prettier'
30+
- 'prettier-*'
31+
vitest:
32+
patterns:
33+
- 'vitest'
34+
- 'vitest-*'
35+
- '@vitest/*'
36+
schedule:
37+
interval: daily
38+
open-pull-requests-limit: 20

.github/workflows/code-lint.yaml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: 'Format and Lint'
2+
on:
3+
pull_request:
4+
5+
jobs:
6+
lint:
7+
runs-on: ubuntu-latest
8+
9+
steps:
10+
- name: 'Checkout source code'
11+
uses: actions/checkout@v4
12+
13+
- name: 'Delete package-lock.json'
14+
run: rm -f package-lock.json
15+
16+
- name: 'Setup Node.js environment'
17+
uses: actions/setup-node@v4
18+
with:
19+
node-version-file: '.tool-versions'
20+
21+
- name: 'Install dependencies'
22+
run: npm install
23+
24+
- name: 'Check formatting'
25+
if: always()
26+
run: npm run format:check
27+
28+
- name: 'Check lint'
29+
if: always()
30+
run: npm run lint:check

.gitignore

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# build output
2+
dist/
3+
4+
# dependencies & cache
5+
node_modules/
6+
package-lock.json
7+
8+
# logs
9+
npm-debug.log*
10+
yarn-debug.log*
11+
yarn-error.log*
12+
pnpm-debug.log*
13+
14+
# coverage files
15+
coverage/
16+
17+
# environment variables
18+
.env
19+
.env.production
20+
21+
# macOS-specific files
22+
.DS_Store
23+
Icon?

.tool-versions

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
nodejs 20.16.0

.vscode/extensions.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"recommendations": [
3+
"dbaeumer.vscode-eslint",
4+
"esbenp.prettier-vscode"
5+
],
6+
"unwantedRecommendations": []
7+
}

.vscode/settings.json

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"files.exclude": {
3+
".git/": true
4+
},
5+
"search.exclude": {
6+
"**/node_modules": true,
7+
"**/dist": true
8+
},
9+
"editor.tabCompletion": "on",
10+
"editor.rulers": [80, 100, 120],
11+
"editor.wordWrap": "wordWrapColumn",
12+
"editor.wordWrapColumn": 120,
13+
"editor.tabSize": 2,
14+
"editor.formatOnSave": true,
15+
"editor.defaultFormatter": "esbenp.prettier-vscode",
16+
"prettier.configPath": "prettier.config.mjs",
17+
"prettier.documentSelectors": [
18+
"**/*.{js,mjs,cjs,jsx,ts,tsx,jsonc,md,mdx,astro}"
19+
],
20+
"editor.codeActionsOnSave": {
21+
"source.fixAll.eslint": "always"
22+
},
23+
"eslint.format.enable": false,
24+
"eslint.lintTask.enable": true,
25+
"cSpell.words": ["pomodoro", "tsconfigs", "vitest"],
26+
"[markdown]": {
27+
"editor.wordWrap": "wordWrapColumn"
28+
}
29+
}

README.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#Taskmato
2+
3+
The Pomodoro Technique is a time management method developed by Francesco Cirillo in the late 1980s. It uses a kitchen timer to break work into intervals, typically 25 minutes in length, separated by short breaks. Each interval is known as a pomodoro, from the Italian word for tomato, after the tomato-shaped kitchen timer Cirillo used as a university student. [wikipedia](https://en.wikipedia.org/wiki/Pomodoro_Technique)
4+
5+
**Taskmato** is a Pomodoro timer for Todoist tasks. It is built with a combination of [Typescript](https://www.typescriptlang.org/, [React](https://react.dev/), and [Material UI](https://mui.com/material-ui/getting-started/).

TODO.md

Whitespace-only changes.

eslint.config.mjs

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import jsLint from "@eslint/js";
2+
import reactHooks from "eslint-plugin-react-hooks";
3+
import reactRefresh from "eslint-plugin-react-refresh";
4+
5+
import importSort from "eslint-plugin-simple-import-sort";
6+
import tsLint from "typescript-eslint";
7+
8+
export default tsLint.config({
9+
extends: [jsLint.configs.recommended, ...tsLint.configs.recommended],
10+
files: ["**/*.{ts,tsx}"],
11+
languageOptions: {
12+
ecmaVersion: 2022,
13+
},
14+
plugins: {
15+
"simple-import-sort": importSort,
16+
"react-hooks": reactHooks,
17+
"react-refresh": reactRefresh,
18+
},
19+
rules: {
20+
...reactHooks.configs.recommended.rules,
21+
"react-refresh/only-export-components": [
22+
"warn",
23+
{ allowConstantExport: true },
24+
],
25+
"simple-import-sort/imports": "error",
26+
"simple-import-sort/exports": "error",
27+
},
28+
});

index.html

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
<title>Taskmato</title>
8+
</head>
9+
10+
<body>
11+
<div id="root"></div>
12+
<script type="module" src="/src/main.tsx"></script>
13+
</body>
14+
15+
</html>

package.json

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"name": "taskmato",
3+
"private": true,
4+
"description": "A Pomodoro timer for Todoist tasks.",
5+
"version": "1.0.0-alpha.1",
6+
"type": "module",
7+
"scripts": {
8+
"dev": "vite",
9+
"build": "tsc -b && vite build",
10+
"preview": "vite preview",
11+
"lint": "npx eslint --fix \"**/*.{js,mjs,cjs,jsx,ts,tsx,json}\"",
12+
"lint:check": "npx eslint \"**/*.{js,mjs,cjs,jsx,ts,tsx,json}\"",
13+
"format": "npx prettier --write \"**/*.{js,mjs,cjs,jsx,ts,tsx,json,md,mdx}\"",
14+
"format:check": "npx prettier --check \"**/*.{js,mjs,cjs,jsx,ts,tsx,json,md,mdx}\""
15+
},
16+
"devDependencies": {
17+
"@eslint/compat": "^1.2.5",
18+
"@eslint/js": "^9.18.0",
19+
"@types/react": "^19.0.7",
20+
"@types/react-dom": "^19.0.3",
21+
"@vitejs/plugin-react": "^4.3.4",
22+
"eslint": "^9.18.0",
23+
"eslint-plugin-jsx-a11y": "^6.10.2",
24+
"eslint-plugin-react": "^7.37.4",
25+
"eslint-plugin-react-hooks": "^5.1.0",
26+
"eslint-plugin-react-refresh": "^0.4.18",
27+
"eslint-plugin-simple-import-sort": "^12.1.1",
28+
"prettier": "^3.4.2",
29+
"typescript": "~5.6.2",
30+
"typescript-eslint": "^8.20.0",
31+
"vite": "^6.0.5"
32+
},
33+
"dependencies": {
34+
"@emotion/react": "^11.14.0",
35+
"@emotion/styled": "^11.14.0",
36+
"@mui/icons-material": "^6.4.0",
37+
"@mui/material": "^6.4.0",
38+
"react": "^19.0.0",
39+
"react-dom": "^19.0.0"
40+
}
41+
}

src/main.tsx

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { CssBaseline } from "@mui/material";
2+
import { StrictMode } from "react";
3+
import { createRoot } from "react-dom/client";
4+
5+
createRoot(document.getElementById("root")!).render(
6+
<StrictMode>
7+
<CssBaseline />
8+
</StrictMode>,
9+
);

tsconfig.json

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"compilerOptions": {
3+
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
4+
"target": "ES2022",
5+
"useDefineForClassFields": true,
6+
"lib": ["ES2022", "DOM", "DOM.Iterable"],
7+
"module": "ESNext",
8+
"skipLibCheck": true,
9+
"baseUrl": ".",
10+
"paths": {},
11+
12+
/* Bundler mode */
13+
"moduleResolution": "bundler",
14+
"allowImportingTsExtensions": true,
15+
"isolatedModules": true,
16+
"moduleDetection": "force",
17+
"noEmit": true,
18+
"jsx": "react-jsx",
19+
20+
/* Linting */
21+
"strict": true,
22+
"noUnusedLocals": true,
23+
"noUnusedParameters": true,
24+
"noFallthroughCasesInSwitch": true,
25+
"noUncheckedSideEffectImports": true
26+
},
27+
"include": ["src"]
28+
}

0 commit comments

Comments
 (0)