A modern web application that streamlines customer request management through Linear's project management system. This application provides an intuitive interface for creating, tracking, and managing customer requests while maintaining seamless integration with Linear's powerful project management features.
- Simple and secure login interface
- Integration with Linear API authentication
- Role-based access control
- View all accessible projects
- Filter and search functionality
- Project status tracking
- Timeline view for project progress
- Create detailed customer requests with rich text editing
- Automatic labeling with "Customer Request" tag
- Priority level assignment
- Markdown support for request descriptions
- Comprehensive project overview
- Issue tracking and management
- Dark mode support for comfortable viewing
- Responsive design for all devices
The application uses environment variables for secure configuration:
# Required: Linear API Key for authentication and API access
VITE_LINEAR_API_KEY=your_linear_api_key
# Optional: Team ID for admin access
# This restricts access to only specified team's projects
VITE_TEAM_ID=your_team_id- Authenticate with Linear's GraphQL API
- Access project data and issues
- Create and manage customer requests
- Handle user permissions
- Restricts project visibility to a specific team
- Provides admin-level access control
- Helps organize and filter projects
- Enhances security by limiting scope
⚠️ Never commit your API key or Team ID to version control. Always use environment variables.
The application uses Linear's GraphQL API with the following main queries and mutations:
-
Project Queries
# Fetch projects with teams query { teams { nodes { projects { nodes { id name description state } } } } }
-
Issue Management
# Create issue with customer request label mutation CreateIssueWithLabel($input: IssueCreateInput!) { issueCreate(input: $input) { success issue { id title labels { nodes { name } } } } }
src/
├── components/ # Reusable UI components
├── context/ # React context providers
├── pages/ # Page components and routing
├── services/ # API and business logic
└── types/ # TypeScript type definitions
-
@apollo/client (^3.12.5)
- GraphQL client for Linear API integration
- Handles caching and state management
-
@mdxeditor/editor (^3.20.0)
- Rich text editing for customer requests
- Markdown support and formatting
-
antd (^5.23.0)
- UI component library
- Provides theme support and responsive design
-
react-router-dom (^7.1.1)
- Client-side routing
- Navigation and URL management
-
Code Splitting
- Route-based code splitting with React Router
- Lazy loading of heavy components
-
Caching
- Apollo Client caching for GraphQL queries
- Browser caching for static assets
-
Docker Optimization
- Multi-stage builds for smaller image size
- Nginx configuration for static file serving
- Gzip compression enabled
-
API Security
- Environment variables for sensitive data
- API key validation
- CORS configuration
-
Data Handling
- Input sanitization
- XSS prevention
- Secure HTTP headers
- Chrome (latest 2 versions)
- Firefox (latest 2 versions)
- Safari (latest 2 versions)
- Edge (latest 2 versions)
- Node.js 20 or higher
- Linear API key
- npm or yarn package manager
- Clone the repository:
git clone https://github.com/uplide/dev-up-track.git
cd dev-up-track- Install dependencies:
npm install- Create a
.envfile in the root directory:
# Required: Your Linear API key for authentication
VITE_LINEAR_API_KEY=your_linear_api_key
# Optional: Team ID for admin access (if you want to restrict access)
VITE_TEAM_ID=your_team_idNote: You can find your Linear API key in Linear's settings under "API" section. The Team ID can be found in the team settings or in the URL when viewing team projects.
- Start the development server:
npm run dev


