from flask import Flask, request, jsonify from flask_cors import CORS import json from datetime import datetime import os app = Flask(__name__) CORS(app) # File paths for data storage DATA_DIR = "data" SCHEDULE_FILE = os.path.join(DATA_DIR, "schedule.json") ACTIVITY_LOG_FILE = os.path.join(DATA_DIR, "activity_logs.json") COMPLETION_FILE = os.path.join(DATA_DIR, "task_completion.json") # Create data directory if it doesn't exist os.makedirs(DATA_DIR, exist_ok=True) def load_json_file(filepath, default=None): if os.path.exists(filepath): with open(filepath, 'r') as f: return json.load(f) return default if default is not None else {} def save_json_file(filepath, data): with open(filepath, 'w') as f: json.dump(data, f, indent=2) # Initialize data files if not os.path.exists(SCHEDULE_FILE): save_json_file(SCHEDULE_FILE, {}) if not os.path.exists(ACTIVITY_LOG_FILE): save_json_file(ACTIVITY_LOG_FILE, {}) if not os.path.exists(COMPLETION_FILE): save_json_file(COMPLETION_FILE, {}) @app.route('/api/schedule', methods=['GET', 'POST']) def handle_schedule(): if request.method == 'GET': schedule = load_json_file(SCHEDULE_FILE) return jsonify(schedule) else: schedule = request.json save_json_file(SCHEDULE_FILE, schedule) return jsonify({"message": "Schedule saved successfully"}) @app.route('/api/activity-log', methods=['GET', 'POST']) def handle_activity_log(): if request.method == 'GET': date = request.args.get('date') logs = load_json_file(ACTIVITY_LOG_FILE) if date: return jsonify(logs.get(date, [])) return jsonify(logs) else: date = request.json.get('date') entries = request.json.get('entries', []) logs = load_json_file(ACTIVITY_LOG_FILE) logs[date] = entries save_json_file(ACTIVITY_LOG_FILE, logs) return jsonify({"message": "Activity log saved successfully"}) @app.route('/api/task-completion', methods=['GET', 'POST']) def handle_task_completion(): if request.method == 'GET': date = request.args.get('date') completion_data = load_json_file(COMPLETION_FILE) if date: return jsonify(completion_data.get(date, {})) return jsonify(completion_data) else: date = request.json.get('date') task_id = request.json.get('taskId') is_completed = request.json.get('isCompleted') completion_data = load_json_file(COMPLETION_FILE) if date not in completion_data: completion_data[date] = {} completion_data[date][task_id] = is_completed save_json_file(COMPLETION_FILE, completion_data) return jsonify({"message": "Task completion status updated successfully"}) @app.route('/api/export', methods=['GET']) def export_data(): schedule = load_json_file(SCHEDULE_FILE) activity_logs = load_json_file(ACTIVITY_LOG_FILE) completion_data = load_json_file(COMPLETION_FILE) export_data = { "schedule": schedule, "activityLogArchive": activity_logs, "taskCompletion": completion_data } return jsonify(export_data) @app.route('/api/import', methods=['POST']) def import_data(): data = request.json if "schedule" in data: save_json_file(SCHEDULE_FILE, data["schedule"]) if "activityLogArchive" in data: save_json_file(ACTIVITY_LOG_FILE, data["activityLogArchive"]) if "taskCompletion" in data: save_json_file(COMPLETION_FILE, data["taskCompletion"]) return jsonify({"message": "Data imported successfully"}) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=7860)