refactor: migrate main.py to modular routers and add project roadmap
CI / Test (Python 3.11) (push) Has been cancelled
CI / Test (Python 3.12) (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Summary (push) Has been cancelled

- Migrated monolithic main.py to feature-scoped routers in app/routers/
- Added GEMINI.md for project context and AI instructional guidelines
- Updated README.md with a comprehensive modernization plan (SQL migration, robust scraping DSL, frontend modernization)
- Improved authentication with cookie support and modular JS
- Updated test suite and documentation
This commit is contained in:
root
2026-03-24 10:12:04 +00:00
parent 1b5d7f9238
commit d4d8d8a3b6
42 changed files with 4518 additions and 2426 deletions
+12 -12
View File
@@ -7,7 +7,7 @@
* Get user's watchlist
*/
async function getWatchlist(status = null) {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -34,7 +34,7 @@ async function getWatchlist(status = null) {
* Add anime to watchlist
*/
async function addToWatchlist(animeData) {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -60,7 +60,7 @@ async function addToWatchlist(animeData) {
* Update watchlist item
*/
async function updateWatchlistItem(itemId, updateData) {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -85,7 +85,7 @@ async function updateWatchlistItem(itemId, updateData) {
* Delete from watchlist
*/
async function deleteFromWatchlist(itemId) {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -122,7 +122,7 @@ async function resumeWatchlistItem(itemId) {
* Check specific anime for new episodes
*/
async function checkWatchlistItem(itemId) {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -145,7 +145,7 @@ async function checkWatchlistItem(itemId) {
* Check all watchlist items
*/
async function checkAllWatchlistItems() {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -168,7 +168,7 @@ async function checkAllWatchlistItems() {
* Get watchlist settings
*/
async function getWatchlistSettings() {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -190,7 +190,7 @@ async function getWatchlistSettings() {
* Update watchlist settings
*/
async function updateWatchlistSettings(settings) {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -215,7 +215,7 @@ async function updateWatchlistSettings(settings) {
* Get watchlist statistics
*/
async function getWatchlistStats() {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -237,7 +237,7 @@ async function getWatchlistStats() {
* Get scheduler status
*/
async function getSchedulerStatus() {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -259,7 +259,7 @@ async function getSchedulerStatus() {
* Start scheduler
*/
async function startScheduler() {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}
@@ -282,7 +282,7 @@ async function startScheduler() {
* Stop scheduler
*/
async function stopScheduler() {
const token = localStorage.getItem('auth_token');
const token = getToken();
if (!token) {
throw new Error('Not authenticated');
}