{"id":19785177,"url":"https://github.com/devmor-j/excel-api","last_synced_at":"2026-05-17T03:34:51.465Z","repository":{"id":253760674,"uuid":"838646547","full_name":"devmor-j/excel-api","owner":"devmor-j","description":"Excel Export API","archived":false,"fork":false,"pushed_at":"2024-08-11T08:44:27.000Z","size":43,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T03:19:17.709Z","etag":null,"topics":["fiber","go","mongodb"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devmor-j.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-06T04:35:55.000Z","updated_at":"2024-08-19T08:26:54.000Z","dependencies_parsed_at":"2024-08-19T11:03:36.339Z","dependency_job_id":null,"html_url":"https://github.com/devmor-j/excel-api","commit_stats":null,"previous_names":["devmor-j/excel-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmor-j%2Fexcel-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmor-j%2Fexcel-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmor-j%2Fexcel-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devmor-j%2Fexcel-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devmor-j","download_url":"https://codeload.github.com/devmor-j/excel-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241117652,"owners_count":19912592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fiber","go","mongodb"],"created_at":"2024-11-12T06:13:50.725Z","updated_at":"2026-05-17T03:34:46.447Z","avatar_url":"https://github.com/devmor-j.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Excel API\n\n\u003c!-- TODO: add api endpoints guide here --\u003e\n\n## Desicions Made\n\n- Since http2 is not required, [fiber](https://github.com/gofiber/fiber) is chosen to run our http server but Go's http package could also serve well for this project provided that number of endpoints are kept small\n- Since no mock data is provided, a seed generator was developed to create unique data and insert them into mongodb\n- Student and seed student types are separated to allow furthur modification and type conversion during seed process (ex: human date string to golang Time type)\n- Writing to spreadsheet performance can be faster using concurrency techniques\n\n## Objective\n\nThe goal of this task is to assess the candidate's ability to build a RESTful service using Golang, interact with a MongoDB database, generate an Excel file, and return the generated file.\n\n## Task Description\n\n1. Build a RESTful API Service:\n\n   - Endpoint: Create a REST API endpoint, such as GET /export-data.\n   - Functionality:\n     - Upon receiving a request to this endpoint, the service should fetch specific documents from a MongoDB collection.\n     - Process the fetched data to generate an Excel file.\n\n2. Data Fetching from MongoDB:\n\n   - The service should connect to a MongoDB database.\n   - Fetch documents based on specified criteria or parameters (e.g., date range, specific fields).\n   - Ensure secure and efficient data retrieval, handling potential errors.\n\n3. Excel File Generation:\n\n   - Use a Golang library to generate an Excel file from the fetched data.\n   - Structure the Excel file with appropriate headers and data formatting.\n\n4. File Handling:\n\n   - Return the created file.\n\n## Submission Requirements\n\n- Source code for the API service.\n- A sample Excel file generated by the service.\n- A brief explanation of the chosen architecture and design patterns.\n\n_Note: If needed, you can add other features to the program to improve efficiency, security and speed._\n\n## Development\n\nUse docker or docker-compose to run a MongoDB instance.\nAlso Provide a username and password for the database inside `.env` file.\n\n```sh\ndocker run --name mongodb -p 27017:27017 -d mongo:8.0.0-rc15-jammy\n# or\ndocker-compose up -d\n```\n\nYou can run server using `go run main.go` or `make`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmor-j%2Fexcel-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevmor-j%2Fexcel-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevmor-j%2Fexcel-api/lists"}