# Autotask API Integration Dashboard A modern Next.js application for interacting with the Autotask PSA REST API, built with React, TypeScript, shadcn/ui, and Tailwind CSS. ## Features - **Dashboard Overview** - View tickets, tasks, and company information - **Ticket Management** - List, filter, and manage support tickets - **Task Tracking** - Monitor and update project tasks - **Company Selector** - Filter data by company - **Resource Management** - Filter by assigned resources - **Modern UI** - Beautiful interface built with shadcn/ui components - **Dark Mode Support** - Automatic dark/light theme - **Real-time Updates** - Fetch latest data from Autotask API - **Secure Authentication** - API credentials stored in environment variables ## Tech Stack - **Framework**: Next.js 15 with App Router - **Language**: TypeScript - **Styling**: Tailwind CSS v4 - **UI Components**: shadcn/ui - **Icons**: Lucide React - **Date Handling**: date-fns - **API Integration**: Native fetch with custom client ## Prerequisites Before you begin, ensure you have: 1. Node.js 18+ installed 2. Autotask API credentials: - API Username (format: `apiuser@YOURDOMAIN.COM`) - API Secret/Password - API Integration Code - API Base URL (e.g., `https://webservices1.autotask.net/atservicesrest/v1.0`) ## Installation 1. Clone the repository and navigate to the app directory: ```bash cd /Users/lorentz/projects/PSA-Utils/autotask-app ``` 2. Install dependencies: ```bash npm install ``` 3. Create a `.env.local` file in the root directory: ```env # Autotask API Configuration AUTOTASK_API_URL=https://webservices1.autotask.net/atservicesrest/v1.0 AUTOTASK_USERNAME=your-api-username@yourdomain.com AUTOTASK_SECRET=your-api-password AUTOTASK_API_INTEGRATION_CODE=your-tracking-code ``` 4. Run the development server: ```bash npm run dev ``` 5. Open [http://localhost:3000](http://localhost:3000) in your browser ## Project Structure ``` autotask-app/ ├── app/ │ ├── api/ # API route handlers │ │ ├── tickets/ # Ticket endpoints │ │ ├── tasks/ # Task endpoints │ │ ├── companies/ # Company endpoints │ │ ├── resources/ # Resource endpoints │ │ └── picklists/ # Picklist endpoints │ └── page.tsx # Main dashboard page ├── components/ │ ├── tickets/ # Ticket-related components │ ├── tasks/ # Task-related components │ ├── companies/ # Company-related components │ └── ui/ # shadcn/ui components ├── lib/ │ ├── services/ # API client and services │ │ ├── autotask-client.ts │ │ └── autotask-factory.ts │ ├── types/ # TypeScript type definitions │ │ └── autotask.ts │ └── hooks/ # Custom React hooks │ └── use-api.ts └── public/ # Static assets ``` ## API Endpoints The application provides the following API routes: - `GET /api/tickets` - Fetch tickets (with optional filters) - `POST /api/tickets` - Create a new ticket - `GET /api/tasks` - Fetch tasks (with optional filters) - `POST /api/tasks` - Create a new task - `GET /api/companies` - Fetch all active companies - `GET /api/resources` - Fetch resources/users - `GET /api/picklists` - Fetch picklist values for dropdowns ## Key Features Implementation ### Rate Limiting The API client includes built-in rate limiting (10 requests/second) to comply with Autotask API limits. ### Error Handling Comprehensive error handling with user-friendly error messages and retry capabilities. ### Type Safety Full TypeScript support with detailed type definitions for all Autotask entities. ### Responsive Design Mobile-friendly interface that works on all device sizes. ## Development ### Adding New Features 1. **New API Endpoints**: Add route handlers in `app/api/` 2. **New Components**: Create components in `components/` 3. **New Entity Types**: Update types in `lib/types/autotask.ts` 4. **New API Methods**: Extend `lib/services/autotask-client.ts` ### Testing Run the development server and test with your Autotask sandbox environment: ```bash npm run dev ``` ### Building for Production ```bash npm run build npm start ``` ## Security Considerations - Never commit `.env.local` or any file containing API credentials - Use environment variables for all sensitive configuration - Implement proper authentication for production deployment - Consider adding user authentication layer - Use HTTPS in production ## Common Issues & Solutions ### API Connection Issues - Verify your API credentials are correct - Check the API URL matches your Autotask zone - Ensure your API user has appropriate permissions ### Rate Limiting - The client automatically handles rate limiting - If you encounter 429 errors, the client will retry ### CORS Issues - API routes act as a proxy to avoid CORS issues - All Autotask API calls go through Next.js API routes ## Future Enhancements - [ ] Add Redis caching for improved performance - [ ] Implement real-time updates with WebSockets - [ ] Add attachment upload functionality - [ ] Create ticket/task editing forms - [ ] Add user authentication and session management - [ ] Implement advanced search and filtering - [ ] Add data export functionality - [ ] Create dashboard widgets and analytics ## Contributing Feel free to submit issues and enhancement requests! ## License This project is for internal use. Please refer to your organization's policies. ## Support For issues related to: - **Autotask API**: Consult the [Autotask REST API Documentation](https://ww1.autotask.net/help/DeveloperHelp/Content/APIs/REST/REST_API_Home.htm) - **Application Issues**: Create an issue in this repository --- Built with ❤️ using Next.js, React, and shadcn/ui