People Panel is a modern web application built with React, TypeScript, and Vite, utilizing pnpm for fast and reliable package management.
Install Node.js:
sudo apt install nodejsInstall pnpm:
npm install -g pnpmThis project uses Clerk to handle authentication and user management.
- Go to https://clerk.dev and create a free account.
- Create a new application in the Clerk dashboard.
- Copy the Publishable Key from the dashboard.
- Clone the repository
git clone https://github.com/nelsonacos/people-panel.git- Go to the project folder
cd people-panel- In the root of your project, create the
.envfile to configure the environment variables
# Unix System
cat .env.example > .env
# Windows System
copy .env.example .env- Configure your
.envfile
VITE_CLERK_PUBLISHABLE_KEY=pk_test_cmlnaxwwkwmwrwdwWxlcGhhbnQtODsowwwvwcwxw📝 Note: Vite automatically loads variables from
.envfiles. Make sure your key starts withVITE_to be available inimport.meta.env.
- Run the command:
docker-compose up --buildThen open http://localhost:3000/ in your browser.
- Clone the repository
git clone https://github.com/nelsonacos/people-panel.git- Go to the project folder
cd people-panel- In the root of your project, create the
.envfile to configure the environment variables
# Unix System
cat .env.example > .env
# Windows System
copy .env.example .env- Configure your
.envfile
VITE_CLERK_PUBLISHABLE_KEY=pk_test_cmlnaxwwkwmwrwdwWxlcGhhbnQtODsowwwvwcwxw📝 Note: Vite automatically loads variables from
.envfiles. Make sure your key starts withVITE_to be available inimport.meta.env.
- Install dependencies
pnpm install- Start the development server
pnpm run devThen open http://localhost:3000/ in your browser.
This setup provides a modern developer experience using:
- ⚡️ Vite for fast builds and hot module replacement
- ⚛️ React with JSX support
- 🟦 TypeScript for static typing
To enhance code quality, consider expanding the ESLint configuration with type-aware rules:
export default tseslint.config({
extends: [
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.strictTypeChecked,
...tseslint.configs.stylisticTypeChecked,
],
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
},
})You can also use additional plugins:
import reactX from 'eslint-plugin-react-x';
import reactDom from 'eslint-plugin-react-dom';
export default tseslint.config({
plugins: {
'react-x': reactX,
'react-dom': reactDom,
},
rules: {
...reactX.configs['recommended-typescript'].rules,
...reactDom.configs.recommended.rules,
},
});